public void Update(int id, string location, string name, string type) { var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); device.Update( location: location == null ? device.Location : new Location(location), name: name ?? device.Name, type: type ?? device.Type ); _deviceRepository.Update(device); var computerRepository = _repositoryFactory.GetComputerRepository(); var scriptRepository = _repositoryFactory.GetScriptRepository(); var taskRepository = _repositoryFactory.GetTaskRepository(); var runScript = new Computer.Actions.RunScript(computerRepository, scriptRepository, taskRepository); runScript.Run( computer: device.Network.AttatchedComputer, scriptText: "HomeAutomation.SyncWithCloud Network=\"" + device.Network.Address + "\"", source: "RoomieBot", updateLastRunScript: false, user: _user ); }
private string Clean(int?timeout) { if (timeout < 1) { timeout = null; } var cache = new InMemoryRepositoryModelCache(); var deleted = 0; var skipped = 0; ListFilter filter = null; DoWork.UntilTimeout(timeout ?? 5, () => { var result = _scriptRepository.Clean(_taskRepository, _computerRepository, filter, cache); deleted += result.Deleted; skipped += result.Skipped; filter = result.NextFilter; return(result.Done); }); return(deleted + " scripts cleaned up, " + skipped + " scripts skipped"); }
public Persistence.Models.Task[] Run(Persistence.Models.Computer computer, TimeSpan?timeout, TimeSpan?pollInterval) { timeout = timeout ?? TimeSpan.FromSeconds(90); pollInterval = pollInterval ?? TimeSpan.FromSeconds(1 / 4); Persistence.Models.Task[] tasks = null; var endTime = DateTime.Now.Add(timeout.Value); while (true) { computer.UpdatePing(); _computerRepository.Update(computer); var now = DateTime.UtcNow; var cache = new InMemoryRepositoryModelCache(); tasks = _taskRepository.ForComputer(computer, now, cache); if (tasks.Length > 0 || DateTime.Now >= endTime) { foreach (var task in tasks) { task.MarkAsReceived(); _taskRepository.Update(task); } return(tasks); } System.Threading.Thread.Sleep(pollInterval.Value); } }
public Response <Persistence.Models.Network> Read(int id) { var cache = new InMemoryRepositoryModelCache(); var network = _networkRepository.Get(_user, id, cache); var result = GetSerializableVersion(network); return(Response.Create(result)); }
public Response <Persistence.Models.Computer> Read(string accessKey) { var cache = new InMemoryRepositoryModelCache(); var computer = _computerRepository.Get(accessKey, cache); var result = GetSerializableVersion(computer); return(Response.Create(result)); }
public Response <Persistence.Models.UserSession> Read(string token) { var cache = new InMemoryRepositoryModelCache(); var session = _sessionRepository.GetUserSession(token, cache); var result = GetSerializableVersion(session); return(Response.Create(result)); }
public Response <Persistence.Models.Device> Read(int id) { var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); var result = GetSerializableVersion(device); return(Response.Create(result)); }
public Response <Persistence.Models.Computer[]> List() { var cache = new InMemoryRepositoryModelCache(); var computers = _computerRepository.Get(_user, cache); var result = computers.Select(GetSerializableVersion) .ToArray(); return(Response.Create(result)); }
public Response RunScript(int id, string script, string source = null) { var cache = new InMemoryRepositoryModelCache(); var computer = _computerRepository.Get(_user, id, cache); if (computer == null) { return(RpcComputerRepositoryHelpers.CreateNotFoundError()); } return(RunScript(computer, script, source)); }
public Response TemperatureSensorPoll(int id) { var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); if (device == null) { return(RpcDeviceRepositoryHelpers.CreateNotFoundError()); } device.TemperatureSensor.Poll(); return(Response.Empty()); }
public Response MultilevelSwitchSetPower(int id, int power) { var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); if (device == null) { return(RpcDeviceRepositoryHelpers.CreateNotFoundError()); } device.MultilevelSwitch.SetPower(power); return(Response.Empty()); }
public Response RemoveDevice(int id) { var cache = new InMemoryRepositoryModelCache(); var network = _networkRepository.Get(_user, id, cache); if (network == null) { return(RpcNetworkRepositoryHelpers.CreateNotFoundError()); } NetworkAction(network, "RemoveDevice"); return(Response.Empty()); }
public Response ThermostatCoreSetMode(int id, string mode) { var parsedMode = mode.ToThermostatMode(); var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); if (device == null) { return(RpcDeviceRepositoryHelpers.CreateNotFoundError()); } device.Thermostat.Core.SetMode(parsedMode); return(Response.Empty()); }
public Response ColorSwitchSetValue(int id, string color) { var parsedColor = color.ToColor(); var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); if (device == null) { return(RpcDeviceRepositoryHelpers.CreateNotFoundError()); } device.ColorSwitch.SetValue(parsedColor); return(Response.Empty()); }
public Response <Persistence.Models.Task[]> GetForComputer(string computerName, TimeSpan?timeout = null, TimeSpan?pollInterval = null) { var cache = new InMemoryRepositoryModelCache(); var computerRepository = _repositoryFactory.GetComputerRepository(); var computer = _computer ?? computerRepository.Get(_user, computerName, cache); var taskRepository = _repositoryFactory.GetTaskRepository(); var getTasks = new Actions.GetForComputer(computerRepository, taskRepository); var tasks = getTasks.Run(computer, timeout, pollInterval); var result = tasks .Select(GetSerializableVersion) .ToArray(); return(Response.Create(result)); }
public Response Update(int id, string name) { var cache = new InMemoryRepositoryModelCache(); var network = _networkRepository.Get(_user, id, cache); if (network == null) { return(RpcNetworkRepositoryHelpers.CreateNotFoundError()); } network.UpdateName(name); _networkRepository.Update(network); return(Response.Empty()); }
public Response BinarySwitchSetPower(int id, string power) { var parsedPower = power.ToToggleSwitchPower(); var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); if (device == null) { return(RpcDeviceRepositoryHelpers.CreateNotFoundError()); } device.BinarySwitch.SetPower(parsedPower); return(Response.Empty()); }
public Response <Page <Persistence.Models.Task> > List(int count = 50, string sortDirection = null, int start = 0) { var filter = new ListFilter { Count = count, SortDirection = sortDirection == null ? SortDirection.Descending : EnumParser.Parse <SortDirection>(sortDirection), Start = start, }; var cache = new InMemoryRepositoryModelCache(); var result = _taskRepository.List(_user, filter, cache) .Transform(GetSerializableVersion); return(Response.Create(result)); }
public Response RenewWebHookKeys(int id) { var cache = new InMemoryRepositoryModelCache(); var computer = _computerRepository.Get(_user, id, cache); if (computer == null) { return(RpcComputerRepositoryHelpers.CreateNotFoundError()); } computer.RenewWebhookKeys(); _computerRepository.Update(computer); return(Response.Empty()); }
public Response ThermostatSetpointsSetSetpoint(int id, string type, string temperature) { var parsedType = type.ToSetpointType(); var parsedTemperature = temperature.ToTemperature(); var cache = new InMemoryRepositoryModelCache(); var device = _deviceRepository.Get(_user, id, cache); if (device == null) { return(RpcDeviceRepositoryHelpers.CreateNotFoundError()); } device.Thermostat.Setpoints.SetSetpoint(parsedType, parsedTemperature); return(Response.Empty()); }
public Response <Persistence.Models.Network[]> List() { var cache = new InMemoryRepositoryModelCache(); var networks = _networkRepository.Get(_user, cache); var deviceRepository = _repositoryFactory.GetDeviceRepository(); foreach (var network in networks) { network.LoadDevices(deviceRepository); } var result = networks.Select(GetSerializableVersion) .ToArray(); return(Response.Create(result)); }
public string Run(TimeSpan?timeout, Persistence.Models.User user) { var cache = new InMemoryRepositoryModelCache(); var deleted = 0; var skipped = 0; ListFilter filter = null; DoWork.UntilTimeout(((int?)timeout?.TotalSeconds) ?? 5, () => { var result = _taskRepository.Clean(user, filter, cache); deleted += result.Deleted; skipped += result.Skipped; filter = result.NextFilter; return(result.Done); }); return(deleted + " tasks cleaned up, " + skipped + " tasks skipped"); }
public Response <string[]> SyncWholeNetwork(int id, int computerId, string[] devicesXml) { var cache = new InMemoryRepositoryModelCache(); var network = _networkRepository.Get(_user, id, cache); if (network == null) { return(RpcNetworkRepositoryHelpers.CreateNotFoundError <string[]>()); } var computerRepository = _repositoryFactory.GetComputerRepository(); var computer = computerRepository.Get(_user, computerId, cache); if (computer == null) { return(RpcComputerRepositoryHelpers.CreateNotFoundError <string[]>()); } return(SyncWholeNetwork(network, computer, devicesXml)); }
public Response Delete(int id) { var cache = new InMemoryRepositoryModelCache(); var network = _networkRepository.Get(_user, id, cache); if (network == null) { return(RpcNetworkRepositoryHelpers.CreateNotFoundError()); } var deviceRepository = _repositoryFactory.GetDeviceRepository(); foreach (var device in deviceRepository.Get(network, cache)) { deviceRepository.Remove(device); } _networkRepository.Remove(network); return(Response.Empty()); }
public Response <Persistence.Models.Device[]> List(bool examples = false) { Persistence.Models.Device[] devices; if (examples) { devices = Persistence.Examples.Devices.ToArray(); } else { var cache = new InMemoryRepositoryModelCache(); var networkRepository = _repositoryFactory.GetNetworkRepository(); var networks = networkRepository.Get(_user, cache); var unsortedDevices = networks.SelectMany((id) => _deviceRepository.Get(id, cache)).ToList(); unsortedDevices.Sort(new DeviceSort()); devices = unsortedDevices.ToArray(); } var result = devices.Select(GetSerializableVersion).ToArray(); return(Response.Create(result)); }