/// <inheritdoc/>
        public async Task <WriteResponseApiModel> NodeWriteAsync(EndpointApiModel endpoint,
                                                                 WriteRequestApiModel request, CancellationToken ct)
        {
            if (endpoint == null)
            {
                throw new ArgumentNullException(nameof(endpoint));
            }
            if (string.IsNullOrEmpty(endpoint.Url))
            {
                throw new ArgumentNullException(nameof(endpoint.Url));
            }
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (request.Attributes == null || request.Attributes.Count == 0)
            {
                throw new ArgumentException(nameof(request.Attributes));
            }
            var response = await _methodClient.CallMethodAsync(_deviceId, _moduleId,
                                                               "NodeWrite_V2", _serializer.SerializeToString(new {
                endpoint,
                request
            }), null, ct);

            return(_serializer.Deserialize <WriteResponseApiModel>(response));
        }
        public async Task <WriteResponseApiModel> WriteAttributesAsync(
            string endpointId, [FromBody][Required] WriteRequestApiModel request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            var writeResult = await _nodes.NodeWriteAsync(
                endpointId, request.ToServiceModel());

            return(writeResult.ToApiModel());
        }
        /// <summary>
        /// Write attributes
        /// </summary>
        /// <param name="endpoint"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <WriteResponseApiModel> NodeWriteAsync(
            EndpointApiModel endpoint, WriteRequestApiModel request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            var result = await _nodes.NodeWriteAsync(
                endpoint.ToServiceModel(), request.ToServiceModel());

            return(result.ToApiModel());
        }
 /// <summary>
 /// Convert back to service model
 /// </summary>
 /// <returns></returns>
 public static WriteRequestModel ToServiceModel(
     this WriteRequestApiModel model)
 {
     if (model == null)
     {
         return(null);
     }
     return(new WriteRequestModel {
         Attributes = model.Attributes?
                      .Select(a => a.ToServiceModel())
                      .ToList(),
         Header = model.Header.ToServiceModel()
     });
 }
        /// <inheritdoc/>
        public async Task <WriteResponseApiModel> NodeWriteAsync(string endpointId,
                                                                 WriteRequestApiModel content, CancellationToken ct)
        {
            if (string.IsNullOrEmpty(endpointId))
            {
                throw new ArgumentNullException(nameof(endpointId));
            }
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }
            if (content.Attributes == null || content.Attributes.Count == 0)
            {
                throw new ArgumentException(nameof(content.Attributes));
            }
            var request = _httpClient.NewRequest(
                $"{_serviceUri}/v2/write/{endpointId}/attributes", _resourceId);

            request.SetContent(content);
            var response = await _httpClient.PostAsync(request, ct).ConfigureAwait(false);

            response.Validate();
            return(response.GetContent <WriteResponseApiModel>());
        }
 /// <summary>
 /// Write node attributes
 /// </summary>
 /// <remarks>
 /// Write any attribute of a node. The endpoint must be activated and connected
 /// and the module client and server must trust each other.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='endpointId'>
 /// The identifier of the activated endpoint.
 /// </param>
 /// <param name='body'>
 /// The batch write request
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <WriteResponseApiModel> WriteAttributesAsync(this IAzureOpcTwinClient operations, string endpointId, WriteRequestApiModel body, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.WriteAttributesWithHttpMessagesAsync(endpointId, body, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Write node attributes
 /// </summary>
 /// <remarks>
 /// Write any attribute of a node. The endpoint must be activated and connected
 /// and the module client and server must trust each other.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='endpointId'>
 /// The identifier of the activated endpoint.
 /// </param>
 /// <param name='body'>
 /// The batch write request
 /// </param>
 public static WriteResponseApiModel WriteAttributes(this IAzureOpcTwinClient operations, string endpointId, WriteRequestApiModel body)
 {
     return(operations.WriteAttributesAsync(endpointId, body).GetAwaiter().GetResult());
 }
Exemple #8
0
 /// <inheritdoc/>
 public Task <WriteResponseApiModel> NodeWriteAsync(string endpointId,
                                                    WriteRequestApiModel content, CancellationToken ct)
 {
     return(Task.FromException <WriteResponseApiModel>(new NotImplementedException()));
 }
Exemple #9
0
 /// <summary>
 /// Write node attributes on endpoint
 /// </summary>
 /// <param name="api"></param>
 /// <param name="endpointUrl"></param>
 /// <param name="request"></param>
 /// <param name="ct"></param>
 /// <returns></returns>
 public static Task <WriteResponseApiModel> NodeWriteAsync(
     this ITwinModuleApi api, string endpointUrl, WriteRequestApiModel request,
     CancellationToken ct = default)
 {
     return(api.NodeWriteAsync(NewEndpoint(endpointUrl), request, ct));
 }