private bool isError(JArray result, out GatewayError err) { var jToken = LookupValue(result, "error"); err = JsonConvert.DeserializeObject <GatewayError>(jToken.ToString()); return(jToken != null); }
public async Task SendAsync(object sensorMessage, Action <object> onSuccess = null, Action <IotApiException> onError = null, Dictionary <string, object> args = null) { HttpResponseMessage response = await executeMsg(sensorMessage); var str = await response.Content.ReadAsStringAsync(); object res = JsonConvert.DeserializeObject(str); if (res is JArray) { var result = JsonConvert.DeserializeObject <JArray>(str); GatewayError err = null; if (isError(result, out err)) { onError?.Invoke(new IotApiException(":( An error has ocurred!", err)); } else { throw new IotApiException("Do not know meaning of this response", result); } } else if (res is JObject) { List <Device> devices = new List <Entities.Device>(); foreach (var prop in ((JObject)res).Properties()) { var dev = JsonConvert.DeserializeObject <Device>(prop.Value.ToString()); dev.Id = prop.Name; devices.Add(dev); } onSuccess?.Invoke(devices); } throw new NotImplementedException(); }