public GameInstance TryAddServer(GameInstance newServer) { string newId = _slug.GenerateSlug(newServer.Name); // verify uniqueness of slug if (IdExists(newId)) { return null; } DirectoryInfo newDirectory = _baseDirectory.CreateSubdirectory(newId); // Create server-info.json using (StreamWriter w = new StreamWriter(Path.Combine(newDirectory.FullName, SERVER_INFO_FILE_NAME))) { ServerInfoFile sInfo = new ServerInfoFile() { Name = newServer.Name, Description = newServer.Description, MajorVersion = newServer.TargetVersion.Major, MinorVersion = newServer.TargetVersion.Minor, PatchVersion = newServer.TargetVersion.Patch }; w.Write(JsonConvert.SerializeObject(sInfo)); } // TODO -create folders structure // Just reload, ignore the performance hit return GetById(newId); ; }
public GameInstance UpdateServer(GameInstance value) { // TODO - write to file system and update environments DirectoryInfo d = GetServerDirectory(value.Key); if (!d.Exists) { // TODO - Error return null; } using (StreamWriter w = new StreamWriter(Path.Combine(d.FullName, SERVER_INFO_FILE_NAME))) { ServerInfoFile sInfo = new ServerInfoFile() { Name = value.Name, Description = value.Description, MajorVersion = value.TargetVersion.Major, MinorVersion = value.TargetVersion.Minor, PatchVersion = value.TargetVersion.Patch, Mods = value.Mods }; w.Write(JsonConvert.SerializeObject(sInfo)); } return GetById(value.Key); }
private GameInstance GetServerInstanceFromFile(DirectoryInfo d) { FileInfo[] file = d.GetFiles(SERVER_INFO_FILE_NAME); if (file.Length != 1) return null; FileInfo serverInfoFile = file[0]; using (StreamReader r = new StreamReader(serverInfoFile.FullName)) { ServerInfoFile sInfo = JsonConvert.DeserializeObject<ServerInfoFile>(r.ReadToEnd()); if (sInfo == null) return null; return new GameInstance { Key = serverInfoFile.Directory.Name, Name = sInfo.Name, Description = sInfo.Description, TargetVersion = new FuzzyVersion { Major = sInfo.MajorVersion.GetValueOrDefault(0), Minor = sInfo.MinorVersion.GetValueOrDefault(17), Patch = sInfo.PatchVersion }, Mods = sInfo.Mods, ImplementationInfo = GetImplementationInfo(serverInfoFile.Directory.Name) }; } }