Skip to content

Commit e2413f9

Browse files
committed
Use DeserializationState to deserialize Ping response
1 parent 05e4f09 commit e2413f9

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

src/Nest/Domain/Responses/PingResponse.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Newtonsoft.Json;
1+
using Elasticsearch.Net;
2+
using Newtonsoft.Json;
23
using System;
34
using System.Collections.Generic;
45
using System.Linq;
@@ -13,5 +14,9 @@ public interface IPingResponse : IResponse
1314
[JsonObject]
1415
public class PingResponse : BaseResponse, IPingResponse
1516
{
17+
public PingResponse(IElasticsearchResponse response)
18+
{
19+
this.IsValid = response.Success && response.HttpStatusCode == 200;
20+
}
1621
}
1722
}

src/Nest/ElasticClient-Ping.cs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
using Elasticsearch.Net;
22
using System;
33
using System.Collections.Generic;
4+
using System.IO;
45
using System.Linq;
56
using System.Text;
67
using System.Threading.Tasks;
78

89
namespace Nest
910
{
11+
using PingConverter = Func<IElasticsearchResponse, Stream, PingResponse>;
12+
1013
public partial class ElasticClient
1114
{
1215
/// <inheritdoc />
@@ -15,7 +18,9 @@ public IPingResponse Ping(Func<PingDescriptor, PingDescriptor> pingSelector = nu
1518
pingSelector = pingSelector ?? (s => s);
1619
return this.Dispatch<PingDescriptor, PingRequestParameters, PingResponse>(
1720
pingSelector,
18-
(p, d) => this.RawDispatch.PingDispatch<PingResponse>(p)
21+
(p, d) => this.RawDispatch.PingDispatch<PingResponse>(
22+
p.DeserializationState(new PingConverter(DeserializePingResponse))
23+
)
1924
);
2025
}
2126

@@ -25,7 +30,9 @@ public Task<IPingResponse> PingAsync(Func<PingDescriptor, PingDescriptor> pingSe
2530
pingSelector = pingSelector ?? (s => s);
2631
return this.DispatchAsync<PingDescriptor, PingRequestParameters, PingResponse, IPingResponse>(
2732
pingSelector,
28-
(p, d) => this.RawDispatch.PingDispatchAsync<PingResponse>(p)
33+
(p, d) => this.RawDispatch.PingDispatchAsync<PingResponse>(
34+
p.DeserializationState(new PingConverter(DeserializePingResponse))
35+
)
2936
);
3037
}
3138

@@ -34,7 +41,9 @@ public IPingResponse Ping(IPingRequest pingRequest)
3441
{
3542
return this.Dispatch<IPingRequest, PingRequestParameters, PingResponse>(
3643
pingRequest,
37-
(p, d) => this.RawDispatch.PingDispatch<PingResponse>(p)
44+
(p, d) => this.RawDispatch.PingDispatch<PingResponse>(
45+
p.DeserializationState(new PingConverter(DeserializePingResponse))
46+
)
3847
);
3948
}
4049

@@ -43,8 +52,15 @@ public Task<IPingResponse> PingAsync(IPingRequest pingRequest)
4352
{
4453
return this.DispatchAsync<IPingRequest, PingRequestParameters, PingResponse, IPingResponse>(
4554
pingRequest,
46-
(p, d) => this.RawDispatch.PingDispatchAsync<PingResponse>(p)
55+
(p, d) => this.RawDispatch.PingDispatchAsync<PingResponse>(
56+
p.DeserializationState(new PingConverter(DeserializePingResponse))
57+
)
4758
);
4859
}
60+
61+
private PingResponse DeserializePingResponse(IElasticsearchResponse response, Stream stream)
62+
{
63+
return new PingResponse(response);
64+
}
4965
}
5066
}

src/Nest/ElasticClient.cs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,6 @@ D descriptor
9595

9696
if (c.Success || statusCodeAllowed)
9797
{
98-
if (c.Response == null)
99-
{
100-
var bodilessResponse = CreateBodilessInstance<R>(c);
101-
return bodilessResponse;
102-
}
103-
10498
c.Response.IsValid = true;
10599
return c.Response;
106100
}
@@ -115,14 +109,6 @@ private static R CreateInvalidInstance<R>(IElasticsearchResponse response) where
115109
return r;
116110
}
117111

118-
private static R CreateBodilessInstance<R>(IElasticsearchResponse response) where R : BaseResponse
119-
{
120-
var r = (R)typeof(R).CreateInstance();
121-
((IResponseWithRequestInformation)r).RequestInformation = response;
122-
r.IsValid = true;
123-
return r;
124-
}
125-
126112
internal Task<I> DispatchAsync<D, Q, R, I>(
127113
Func<D, D> selector
128114
, Func<ElasticsearchPathInfo<Q>, D, Task<ElasticsearchResponse<R>>> dispatch

0 commit comments

Comments
 (0)