public async Task <ResponseWithHeaders <IReadOnlyList <TwinData>, QueryGetTwinsHeaders> > GetTwinsAsync(QuerySpecification querySpecification, string xMsContinuation = null, string xMsMaxItemCount = null, CancellationToken cancellationToken = default) { if (querySpecification == null) { throw new ArgumentNullException(nameof(querySpecification)); } using var message = CreateGetTwinsRequest(querySpecification, xMsContinuation, xMsMaxItemCount); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); var headers = new QueryGetTwinsHeaders(message.Response); switch (message.Response.Status) { case 200: { IReadOnlyList <TwinData> value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); List <TwinData> array = new List <TwinData>(); foreach (var item in document.RootElement.EnumerateArray()) { array.Add(TwinData.DeserializeTwinData(item)); } value = array; return(ResponseWithHeaders.FromValue(value, headers, message.Response)); }
public async Task <Response <TwinData> > GetDeviceTwinAsync(string id, CancellationToken cancellationToken = default) { if (id == null) { throw new ArgumentNullException(nameof(id)); } using var message = CreateGetDeviceTwinRequest(id); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 200: { TwinData value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); if (document.RootElement.ValueKind == JsonValueKind.Null) { value = null; } else { value = TwinData.DeserializeTwinData(document.RootElement); } return(Response.FromValue(value, message.Response)); }