private String ReplaceTokens(SimulatorInstance instance, MessageTransmissionPlan plan, String input) { var msg = plan.Message.Value; if (String.IsNullOrEmpty(input)) { return(String.Empty); } foreach (var attr in msg.DynamicAttributes) { var instanceValue = plan.Values.Where(atr => atr.Attribute.Id == attr.Id).FirstOrDefault(); if (instanceValue == null || String.IsNullOrEmpty(instanceValue.Value)) { input = input.Replace($"~{attr.Key}~", attr.DefaultValue); } else { if (instanceValue.Value.StartsWith("~random-int")) { input = RandomizeInt(input, instanceValue.Value, attr.Key); } else if (instanceValue.Value.StartsWith("~random-float")) { input = RandomizeFloat(input, instanceValue.Value, attr.Key); } else { input = input.Replace($"~{attr.Key}~", instanceValue.Value); } } } input = input.Replace($"~deviceid~", String.IsNullOrEmpty(instance.DeviceId) ? _simulator.DeviceId : instance.DeviceId); input = input.Replace($"~datetime~", DateTime.Now.ToString()); input = input.Replace($"~username~", _simulator.UserName); input = input.Replace($"~password~", _simulator.Password); input = input.Replace($"~accesskey~", _simulator.AccessKey); input = input.Replace($"~password~", _simulator.Password); input = input.Replace($"~datetimeiso8601~", DateTime.UtcNow.ToJSONString()); input = RandomizeInt(input, input); input = RandomizeFloat(input, input); if (msg.AppendCR) { input += "\r"; } if (msg.AppendLF) { input += "\n"; } return(input); }
public SimulatorRuntime(ISimulatorRuntimeServices runtimeService, INotificationPublisher notificationPublisher, IAdminLogger adminLogger, LagoVista.IoT.Simulator.Admin.Models.SimulatorInstance instance) { _runtimeService = runtimeService; _instance = instance; _notificationPublisher = notificationPublisher; _connected = DateTime.UtcNow; _lastAccess = _connected; _simulator = instance.Simulator.Value; _adminLogger = adminLogger; InstanceId = Guid.NewGuid().ToId(); SetState("default"); }