public void DeleteFiles(User user, EncounterMetadata metadata) { var folder = GetFolder(user, FileType.Data); if (!Directory.Exists(folder)) { return; } var files = Directory.GetFiles(folder, $"{metadata.Filename}*"); foreach (var file in files) { foreach (FileType fileType in Enum.GetValues(typeof(FileType))) { if (!file.EndsWith($".{fileExtensionGetter.GetExtension(fileType)}", StringComparison.InvariantCultureIgnoreCase)) { continue; } File.Delete(file); break; } } }
public void UpdateFilename(User user, EncounterMetadata metadata) { string oldFilePrefix = metadata.Filename; string newFilePrefix = metadata.GetDesiredFilename(); if (newFilePrefix == oldFilePrefix) { return; } metadata.Filename = newFilePrefix; var folder = GetFolder(user, FileType.Data); if (!Directory.Exists(folder)) { return; } var files = Directory.GetFiles(folder, $"{oldFilePrefix}*"); foreach (var file in files) { // a better replacement should be used to prevent extra things from replaced // on Windows, this would only cause an error if the user folder shared a name with the file File.Move(file, file.Replace(oldFilePrefix, newFilePrefix)); } }
protected string GetFilepath(User user, FileType fileType, EncounterMetadata metadata) { var folder = GetFolder(user, fileType); var filename = filenameGetter.GetFilename(fileType, metadata); return(Path.Combine(folder, filename)); }
public EncounterMetadata(EncounterMetadata baseEncounterInfo) { Categories.AddRange(baseEncounterInfo.Categories); Subtitle = baseEncounterInfo.Subtitle; Description = baseEncounterInfo.Description; Audience = baseEncounterInfo.Audience; Difficulty = baseEncounterInfo.Difficulty; EditorVersion = baseEncounterInfo.EditorVersion; }
public virtual WaitableTask UnlockEncounter(User user, EncounterMetadata metadata) { var webRequest = GetWebRequest(user, metadata); var serverOutput = serverReader.Begin(webRequest); var task = new WaitableTask(); serverOutput.AddOnCompletedListener((result) => ProcessResults(task, result)); return(task); }
protected virtual WWWForm CreateForm(User user, EncounterMetadata metadata) { var form = new WWWForm(); form.AddField(ModeVariable, DeleteModeValue); form.AddField(AccountIdVariable, user.AccountId); form.AddField(RecordNumberVariable, metadata.RecordNumber); return(form); }
public WaitableTask <EncounterNonImageContent> GetNonImageContent(User user, EncounterMetadata metadata) { var contentData = new WaitableTask <EncounterNonImageContent>(); var webRequest = GetWebRequest(user, metadata); var serverResult = serverReader.Begin(webRequest); serverResult.AddOnCompletedListener((result) => ProcessResults(contentData, result)); return(contentData); }
public WaitableTask <string> GetFileText(User user, FileType fileType, EncounterMetadata metadata) { var fileText = new WaitableTask <string>(); var filePath = GetFile(fileType, metadata.Filename); var webRequest = UnityWebRequest.Get(filePath); var serverResult = serverReader.Begin(webRequest); serverResult.AddOnCompletedListener((result) => SetFileResult(result, fileText)); return(fileText); }
public WaitableTask <string> GetFileText(User user, FileType fileType, EncounterMetadata metadata) { var filepath = GetFilepath(user, fileType, metadata); if (!File.Exists(filepath)) { return(new WaitableTask <string>(new Exception("File doesn't exist"))); } var text = File.ReadAllText(filepath); return(new WaitableTask <string>(text)); }
public void SetFileText(User user, FileType fileType, EncounterMetadata metadata, string contents) { var filepath = GetFilepath(user, fileType, metadata); var directory = Path.GetDirectoryName(filepath); if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } File.WriteAllText(filepath, contents); }
private UnityWebRequest GetWebRequest(User user, EncounterMetadata metadata) { var arguments = new UrlArgument[] { new UrlArgument(AccountIdVariable, user.AccountId.ToString()), new UrlArgument(ModeVariable, ModeValue), new UrlArgument(RecordNumberVariable, metadata.RecordNumber.ToString()), new UrlArgument(ColumnVariable, ColumnValue) }; var url = urlBuilder.BuildUrl(DownloadPhp, arguments); return(UnityWebRequest.Get(url)); }
protected virtual UnityWebRequest GetWebRequest(User user, EncounterMetadata metadata) { var arguments = new UrlArgument[] { new UrlArgument(ModeVariable, ModeValue), new UrlArgument(AccountVariable, user.AccountId.ToString()), new UrlArgument(UsernameVariable, Environment.UserName), new UrlArgument(RecordNumberVariable, metadata.RecordNumber.ToString()) }; var url = urlBuilder.BuildUrl(LockPhp, arguments); return(UnityWebRequest.Get(url)); }
public WaitableTask <UserEncounter> GetUserEncounter(User user, EncounterMetadata metadata, EncounterBasicStatus basicStatus, SaveType saveType) { var encounterData = dataReader.GetEncounter(user, metadata, saveType); var detailedStatus = detailedStatusReader.GetDetailedStatus(user, metadata, basicStatus); var encounter = new WaitableTask <UserEncounter>(); void processResults() => ProcessResults(user, encounter, encounterData, detailedStatus); encounterData.AddOnCompletedListener((result) => processResults()); detailedStatus.AddOnCompletedListener((result) => processResults()); return(encounter); }
protected virtual void AddFormModeFields(WWWForm form, EncounterMetadata metadata) { string mode; if (metadata.RecordNumber >= 0 && metadata.RecordNumber < 1000) { form.AddField(RecordNumberVariable, metadata.RecordNumber); mode = UpdateModeValue; } else { mode = UploadModeValue; } form.AddField(ModeVariable, mode); }
public WaitableTask Delete(User user, EncounterMetadata metadata) { if (user.IsGuest) { return(WaitableTask.CompletedTask); } var url = UrlBuilder.BuildUrl(PhpFile); var form = CreateForm(user, metadata); var webRequest = UnityWebRequest.Post(url, form); var serverResults = ServerReader.Begin(webRequest); var result = new WaitableTask(); serverResults.AddOnCompletedListener((serverResult) => ProcessResults(result, serverResult, metadata)); return(result); }
private void AddMetadata(Dictionary <int, Dictionary <SaveType, EncounterMetadata> > metadataGroups, SaveType saveType, EncounterMetadata metadata) { Dictionary <SaveType, EncounterMetadata> metadataGroup; if (metadataGroups.ContainsKey(metadata.RecordNumber)) { metadataGroup = metadataGroups[metadata.RecordNumber]; } else { metadataGroup = new Dictionary <SaveType, EncounterMetadata>(); metadataGroups.Add(metadata.RecordNumber, metadataGroup); } if (!metadataGroup.ContainsKey(saveType)) { metadataGroup.Add(saveType, metadata); } }
protected virtual void AddMetadataFields(WWWForm form, EncounterMetadata metadata) { if (metadata is INamed named) { AddEscapedField(form, FirstNameVariable, named.Name.FirstName); AddEscapedField(form, LastNameVariable, named.Name.LastName); } else { AddEscapedField(form, TitleVariable, metadata.Title); } AddEscapedField(form, DifficultyVariable, metadata.Difficulty.ToString()); AddEscapedField(form, SubtitleVariable, metadata.Subtitle); AddEscapedField(form, DescriptionVariable, metadata.Description); AddCategoryField(form, metadata.Categories); metadata.ResetDateModified(); form.AddField(DateModifiedVariable, metadata.DateModified.ToString()); AddEscapedField(form, AudienceVariable, metadata.Audience); AddEscapedField(form, VersionVariable, VersionValue); if (metadata is IWebCompletion webCompletion) { AddEscapedField(form, UrlVariable, webCompletion.Url); AddEscapedField(form, CompletionCodeVariable, webCompletion.CompletionCode); } form.AddField(PublicVariable, metadata.IsPublic); form.AddField(TemplateVariable, metadata.IsTemplate); if (metadata.Sprite == null) { return; } AddEscapedField(form, SpriteDataVariable, SpriteSerializer.Serialize(metadata.Sprite)); form.AddField(SpriteWidthVariable, metadata.Sprite.texture.width); form.AddField(SpriteHeightVariable, metadata.Sprite.texture.height); form.AddField(GrantVariable, metadata.GrantInfo); }
public WaitableTask Delete(User user, EncounterMetadata encounterMetadata) { LocalFileManager.DeleteFiles(user, encounterMetadata); AutosaveFileManager.DeleteFiles(user, encounterMetadata); return(WaitableTask.CompletedTask); }
public EncounterMetadataSelectedEventArgs(EncounterMetadata metadata) => Metadata = metadata;
protected abstract void Serialize(EncounterMetadata metadata);
protected override void Serialize(EncounterMetadata metadata) => metadata.IsPublic = !Toggle.isOn;
private void ProcessResults(WaitableTask actionResult, TaskResult <string> serverResult, EncounterMetadata metadata) { if (serverResult.IsError()) { actionResult.SetError(serverResult.Exception); return; } Debug.Log("Returned text from PHP: \n" + serverResult.Value); if (string.IsNullOrWhiteSpace(serverResult.Value)) { actionResult.SetError(new Exception("No text returned from the server.")); } else if (!int.TryParse(serverResult.Value, out int recordNumber)) { actionResult.SetError(new Exception(serverResult.Value)); } else if (recordNumber != metadata.RecordNumber) { actionResult.SetError(new Exception("Did not get the correct metadata from the server.")); } else { actionResult.SetCompleted(); } }
protected override void Serialize(EncounterMetadata metadata) => metadata.IsTemplate = Toggle.isOn;
protected virtual void ProcessResults(WaitableTask actionResult, TaskResult <string> serverResult, EncounterMetadata metadata) { if (serverResult.IsError()) { actionResult.SetError(serverResult.Exception); return; } Debug.Log("Returned text from PHP: \n" + serverResult.Value); if (string.IsNullOrWhiteSpace(serverResult.Value)) { actionResult.SetError(new Exception("No text returned from the server.")); return; } var splitStr = serverResult.Value.Split('|'); if (int.TryParse(splitStr[0], out var recordNumber)) { metadata.RecordNumber = recordNumber; } actionResult.SetCompleted(); }
public void SetFileText(User user, FileType fileType, EncounterMetadata metadata, string contents) => throw new Exception("Cannot write to demo files");
public void DeleteFiles(User user, EncounterMetadata metadata) => throw new Exception("Cannot delete demo files");
public void UpdateFilename(User user, EncounterMetadata metadata) => throw new Exception("Cannot update names of demo files");