private JsonRoot UpdateJson(JsonRoot root, string directory, string filename, IFormCollection form, Source source, string SASToken) { // Variables prepare string baseRoute = $"https://soundbuttons.blob.core.windows.net/sound-buttons/{directory}/"; string group = form.GetFirstValue("group") ?? "未分類"; // Get ButtonGrop if exists, or new one ButtonGroup buttonGroup = null; foreach (var btg in root.buttonGroups) { try { var name = btg.name.ZhTw; if (group == name) { buttonGroup = btg; break; } } catch (InvalidCastException) { } } if (null == buttonGroup) { buttonGroup = new ButtonGroup { name = new Text(group, group), baseRoute = baseRoute, buttons = new List <Button>() }; root.buttonGroups.Add(buttonGroup); } // Prevent script injection source.videoId = System.Web.HttpUtility.UrlEncode(source.videoId); // Add button if (!float.TryParse(form.GetFirstValue("volume"), out float volume)) { volume = 1; } buttonGroup.buttons.Add(new Button( filename, new Text( form.GetFirstValue("nameZH") ?? "", form.GetFirstValue("nameJP") ?? "" ), volume, source, SASToken )); return(root); }