public async Task <IActionResult> GetPlotData([FromBody] PlotDataRequest request, CancellationToken cancellationToken) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); // 400 } try { var result = await _historian.ReadPlotData(User, request.Tags, request.Start.ToUtcDateTime(), request.End.ToUtcDateTime(), request.Intervals, cancellationToken).ConfigureAwait(false); return(Ok(result.ToDictionary(x => x.Key, x => x.Value.ToHistoricalTagValuesDto()))); // 200 } catch (ArgumentException) { return(BadRequest()); // 400 } catch (OperationCanceledException) { return(StatusCode(204)); // 204 } catch (SecurityException) { return(Forbid()); // 403 } catch (NotSupportedException) { return(BadRequest()); // 400 } catch (NotImplementedException) { return(BadRequest()); // 400 } }
public Task <IActionResult> GetPlotData(CancellationToken cancellationToken, [FromQuery] string[] tag, [FromQuery] string start, [FromQuery] string end, [FromQuery] int intervals = 1000) { var model = new PlotDataRequest() { Tags = tag, Start = start, End = end, Intervals = intervals }; TryValidateModel(model); return(GetPlotData(model, cancellationToken)); }
/// <summary> /// Reads visualization-friendly data values for a set of tags. Authorized using the /// <c>aika:readtagdata</c> authorization policy. /// </summary> /// <param name="request">The plot data request.</param> /// <param name="cancellationToken">The cancellation token for the request.</param> /// <returns> /// A task that will return the plot data values for the tags, indexed by tag name. /// </returns> public async Task <IDictionary <string, HistoricalTagValuesDto> > ReadPlotValues(PlotDataRequest request, CancellationToken cancellationToken) { if (request == null) { throw new ArgumentNullException(nameof(request)); } const string url = "api/tags/data/plot"; var response = await _client.PostAsJsonAsync(url, request, cancellationToken).ConfigureAwait(false); response.EnsureSuccessStatusCode(); return(await response.Content.ReadAsJsonAsync <IDictionary <string, HistoricalTagValuesDto> >(cancellationToken).ConfigureAwait(false)); }