public async Task <IActionResult> WriteArchiveData([FromBody] WriteTagValuesRequest request, CancellationToken cancellationToken) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); // 400 } try { var result = await _historian.InsertTagArchiveData(User, request.ToTagValueDictionary(), cancellationToken).ConfigureAwait(false); return(Ok(result.ToDictionary(x => x.Key, x => x.Value.ToWriteTagValuesResultDto()))); // 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 } }
/// <summary> /// Inserts values directly into the historian archive (i.e. bypassing the exception and /// compression filters for the destination tags). This method is intended for back-filling /// gaps in history; to update the current value for a set of tags, use /// <see cref="WriteSnapshotValues(WriteTagValuesRequest, CancellationToken)"/>. Authorized /// using the <c>aika:writetagdata</c> authorization policy. /// </summary> /// <param name="request">The write request.</param> /// <param name="cancellationToken">The cancellation token for the request.</param> /// <returns> /// A task that returns the write results, indexed by tag name. /// </returns> public async Task <IDictionary <string, WriteTagValuesResultDto> > InsertArchiveValues(WriteTagValuesRequest request, CancellationToken cancellationToken) { if (request == null) { throw new ArgumentNullException(nameof(request)); } const string url = "api/tags/data/write/archive"; var response = await _client.PostAsJsonAsync(url, request, cancellationToken).ConfigureAwait(false); response.EnsureSuccessStatusCode(); return(await response.Content.ReadAsJsonAsync <IDictionary <string, WriteTagValuesResultDto> >(cancellationToken).ConfigureAwait(false)); }