public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { List <JsonInstanceInfo> result = null; try { if (reader.TokenType == JsonToken.StartArray) { result = (List <JsonInstanceInfo>)serializer.Deserialize(reader, typeof(List <JsonInstanceInfo>)); } else { JsonInstanceInfo singleInst = (JsonInstanceInfo)serializer.Deserialize(reader, typeof(JsonInstanceInfo)); if (singleInst != null) { result = new List <JsonInstanceInfo> { singleInst }; } } } catch (Exception) { result = new List <JsonInstanceInfo>(); } if (result == null) { result = new List <JsonInstanceInfo>(); } return(result); }
public async Task <EurekaHttpResponse <InstanceInfo> > SendHeartBeatAsync(string appName, string id, InstanceInfo info, InstanceStatus overriddenStatus) { if (info == null) { throw new ArgumentNullException(nameof(info)); } if (string.IsNullOrEmpty(appName)) { throw new ArgumentException(nameof(appName)); } if (string.IsNullOrEmpty(id)) { throw new ArgumentException(nameof(id)); } var queryArgs = new Dictionary <string, string>() { { "status", info.Status.ToString() }, { "lastDirtyTimestamp", DateTimeConversions.ToJavaMillis(new DateTime(info.LastDirtyTimestamp, DateTimeKind.Utc)).ToString() } }; if (overriddenStatus != InstanceStatus.UNKNOWN) { queryArgs.Add("overriddenstatus", overriddenStatus.ToString()); } HttpClient client = GetHttpClient(_config); var requestUri = GetRequestUri(_serviceUrl + "apps/" + Uri.EscapeDataString(info.AppName) + "/" + Uri.EscapeDataString(id), queryArgs); var request = GetRequestMessage(HttpMethod.Put, requestUri); try { using (HttpResponseMessage response = await client.SendAsync(request)) { Stream stream = await response.Content.ReadAsStreamAsync(); JsonInstanceInfo jinfo = JsonInstanceInfo.Deserialize(stream); InstanceInfo infoResp = null; if (jinfo != null) { infoResp = InstanceInfo.FromJsonInstance(jinfo); } Trace.TraceInformation( "SendHeartbeatAsync {0}, status: {1}, instanceInfo: {2}", requestUri.ToString(), response.StatusCode, (infoResp != null) ? infoResp.ToString() : "null"); EurekaHttpResponse <InstanceInfo> resp = new EurekaHttpResponse <InstanceInfo>(response.StatusCode, infoResp) { Headers = response.Headers }; return(resp); } } catch (Exception e) { Trace.TraceError("SendHeartbeatAsync Exception: {0}", e); throw; } finally { DisposeHttpClient(client); } }
public JsonInstanceInfoRoot(JsonInstanceInfo info) { Instance = info; }