public async Task <Guid> CreateMatcher(MatcherCreate matcherCreate) { SetupHttpClient(); _logger.Information($"Creating Matcher: {JsonConvert.SerializeObject(matcherCreate, Formatting.Indented)}"); var content = JsonConvert.SerializeObject(matcherCreate); var response = await _httpClient.PostAsync("matchers", new StringContent(content, Encoding.UTF8, "application/json")); return(await GetIdFromResponse(response, _logger)); }
private static async Task SetTemperatureSensorValueUDF() { var ids = await clients.MatchersClient.RetrieveAsync(names : "SetTemperatureSensorValue"); if (ids.Any()) { await clients.MatchersClient.DeleteAsync(ids.First().Id); } // define the matcher var handleTemperatureMatchCreate = new MatcherCreate { SpaceId = rootId, FriendlyName = "SetTemperatureSensorValue", Name = "SetTemperatureSensorValue", Description = "SetTemperatureSensorValue", Conditions = new List <ConditionCreate>() }; // create the matcher handleTemperatureMatchCreate.Conditions.Add( new ConditionCreate { Path = "$.dataType", Comparison = ConditionCreateComparison.Equals, Value = "\"Temperature\"", Target = ConditionCreateTarget.Sensor }); var handleTemperatureMatcherId = await clients.MatchersClient.CreateAsync(handleTemperatureMatchCreate); var fids = await clients.UserDefinedFunctionsClient.RetrieveAsync(names : "SetTemperatureSensorValue"); if (fids.Any()) { await clients.UserDefinedFunctionsClient.DeleteAsync(fids.First().Id); } var handleTemperatureUDFId = await CreateUserDefinedFunction( new CreateUserDefinedFunctionArgs { SpaceId = rootId, Name = "SetTemperatureSensorValue", Description = "SetTemperatureSensorValue", Matchers = new Guid[] { handleTemperatureMatcherId } }, await System.IO.File.ReadAllTextAsync("SetTemperatureSensorValue.js") ); // UDF descriptor //var handleTemperatureUDFCreate = new UserDefinedFunctionCreate //{ // SpaceId = rootId, // Name = "SetTemperatureSensorValue", // FriendlyName = "SetTemperatureSensorValue", // Description = "SetTemperatureSensorValue", // Matchers = new List<Guid>() //}; //handleTemperatureUDFCreate.Matchers.Add(handleTemperatureMatcherId); //var handleTemperatureUDFId = // await clients.UserDefinedFunctionsClient.CreateAsync( // handleTemperatureUDFCreate.ToJson(), // new FileParameter(System.IO.File.OpenRead("SetTemperatureSensorValue.js"), "SetTemperatureSensorValue.js", "text/javascript") // ); var root = await clients.SpacesClient.RetrieveByIdAsync(rootId, includes : Includes21.FullPath); var rids = await clients.RoleAssignmentsClient.RetrieveAsync(root.SpacePaths.First()); foreach (var rid in rids) { await clients.RoleAssignmentsClient.DeleteAsync(rid.Id); } var roleId = await clients.RoleAssignmentsClient.CreateAsync(new RoleAssignmentCreate { RoleId = Roles.SpaceAdministrator, ObjectIdType = RoleAssignmentCreateObjectIdType.UserDefinedFunctionId, ObjectId = handleTemperatureUDFId.ToString(), Path = root.SpacePaths.First() }); var sss = await clients.SensorsClient.RetrieveAsync(dataTypes : "Temperature"); foreach (var s in sss) { var result = await clients.MatchersClient.EvaluateAsync(handleTemperatureMatcherId, s.Id, true); var rrrr = await clients.SensorsClient.MatchersAsync(s.Id, includes : Includes19.UserDefinedFunctions); } }