public async Task <Twins> UpdateTwinTagsAsync([FromBody] TwinUpdateRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TwinTags == null) { throw new ArgumentNullException("Tags"); } var businessRequestTags = _mapper.Map <SIoT.Tags>(request.TwinTags); if (businessRequestTags != null) { SIoT.Twins data = await _iotService.UpdateTwinsAsync(request.DeviceId, JsonConvert.SerializeObject(new { tags = businessRequestTags })); if (data != null) { return(_mapper.Map <Twins>(data)); } else { return(null); } } else { return(null); } }
public async Task <string> RunTwinTagsUpdateJobAsync([FromBody] TwinUpdateJobRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (request.TwinTags == null) { throw new ArgumentNullException("Tags"); } string jobId = Guid.NewGuid().ToString(); var twin = new SIoT.Twins(); twin.Tags = _mapper.Map <SIoT.Tags>(request.TwinTags); if (twin.Tags != null) { //Send Twins but build new Twin Azure object at service level. var serviceRequest = new SIoT.TwinsSearchRequest(); serviceRequest.WhereCondition = request.WhereConstraint; await _iotService.RunTwinUpdateJobAsync(jobId, request.WhereConstraint, twin); return(jobId); } else { return(string.Empty); } }
public async Task RunTwinUpdateJobAsync(string jobId, string queryCondition, S.IoT.Twins twin, DateTime startTime, long timeOut) { if (string.IsNullOrEmpty(jobId)) { throw new ArgumentNullException("jobId"); } if (string.IsNullOrEmpty(queryCondition)) { throw new ArgumentNullException("queryCondition"); } if (twin == null) { throw new ArgumentNullException("twin"); } var iotHubTwin = _mapper.Map <Twin>(twin); if (iotHubTwin == null) { throw new Exception("Twin mapping error."); } using (JobClient jobClient = JobClient.CreateFromConnectionString(_settings.IoTHub.ConnectionString)) { if (jobClient != null) { JobResponse createJobResponse = await jobClient.ScheduleTwinUpdateAsync( jobId, queryCondition, iotHubTwin, startTime, timeOut); } } }
public async Task RunTwinUpdateJobAsync(string jobId, string queryCondition, S.IoT.Twins twin) { await RunTwinUpdateJobAsync(jobId, queryCondition, twin, DateTime.UtcNow, (long)TimeSpan.FromMinutes(2).TotalSeconds); }