public string voucher_code; // Create voucher public static string MergeErrors(string input) { int i = input.IndexOf("\"errors\":{"); if (i != -1) { //StringBuilder buffer = Utility.GetBuffer(input); // Gross replace & restore of JSON. If there is more than errors/status, this won't work. //buffer.Replace("\",\"", "<br><br>["); //buffer.Replace("\":\"", "]<br>"); //buffer.Replace("\"errors\":{\"", "\"errors\":{\"error\":\"["); //buffer.Replace("\"status]<br>", "\"status\":\""); //return Utility.ReturnBuffer(buffer); // Keep this one around in case. if (i != -1) { StringBuilder buffer = Utility.GetBuffer(input); i += "\"errors\":{".Length - 1; int endBracket = DataStructureExtension.DigestBracketScope(buffer, i); bool first = true; while (i + 1 < endBracket && buffer[i] != ']') { ++i; int startBracket = i; i = DataStructureExtension.DigestString(buffer, i); if (i != startBracket) { string key = buffer.ToString().Substring(startBracket + 1, i - (startBracket + 1)); if (first == true) { first = false; input = input.Replace("\"" + key + "\":\"", "\"error\":\"[" + key + "] "); } else { input = input.Replace("\",\"" + key + "\":\"", "<br><br>[" + key + "] "); } ++i; } } Utility.RestoreBuffer(buffer); } } return(input); }
public string voucher_code; // Create voucher public static string MergeErrors(string input) { int i = input.IndexOf("\"errors\":{"); if (i != -1) { if (i != -1) { StringBuilder buffer = Utility.GetBuffer(input); i += "\"errors\":{".Length - 1; int endBracket = DataStructureExtension.DigestBracketScope(buffer, i); bool first = true; while (i + 1 < endBracket && buffer[i] != ']') { ++i; int startBracket = i; i = DataStructureExtension.DigestString(buffer, i); if (i != startBracket) { string key = buffer.ToString().Substring(startBracket + 1, i - (startBracket + 1)); if (first == true) { first = false; input = input.Replace("\"" + key + "\":\"", "\"error\":\"[" + key + "] "); } else { input = input.Replace("\",\"" + key + "\":\"", "<br><br>[" + key + "] "); } ++i; } } Utility.RestoreBuffer(buffer); } } return(input); }
public static void RequestGetPackageVersion(this PublisherDatabase database, IPublisherAPI api, Version version, Action <RequestResponse <VersionDetailed> > onCompleted = null) { api.GetPackageVersion(version.id, (r, result) => { RequestResponse <VersionDetailed> requestResponse = new RequestResponse <VersionDetailed>() { context = version, ok = false, error = null, result = null }; if (DataStructureExtension.CheckRequest(r, result, requestResponse) == true) { try { StringBuilder buffer = Utility.GetBuffer(result); // Convert object "languages" to a JSON array. int start = result.IndexOf("\"languages\":{"); Debug.AssertFormat(start != -1, "Token \"languages\" not found when requesting version \"{0}\".", version); start += "\"languages\":{".Length - 1; // Rely on brackets instead of sibling, in case Unity server changes the order. int end = DataStructureExtension.DigestBracketScope(buffer, start) - 1; Debug.AssertFormat(end < buffer.Length, "Closing token of \"languages\" not found when requesting version \"{0}\".", version); buffer[start] = '['; buffer[end] = ']'; int i = start; while (i < buffer.Length && buffer[i] != ']') { ++i; int startBracket = i; i = DataStructureExtension.DigestString(buffer, i); buffer[i + 1] = ','; buffer.Remove(i + 2, 1); buffer.Insert(startBracket, "{\"languageCode\":"); i = DataStructureExtension.DigestBracketScope(buffer, startBracket); } result = Utility.ReturnBuffer(buffer); } catch (Exception ex) { Debug.LogException(ex); } VersionDetailed versionDetail = JsonUtility.FromJson <VersionDetailed>(result); var languages = new List <VersionDetailed.Package.Version.Language>(versionDetail.package.version.languages); languages.Sort((a, b) => a.languageCode.CompareTo(b.languageCode)); versionDetail.package.version.languages = languages.ToArray(); version.detailed = versionDetail; int index = database.versions.FindIndex(v => v.package.version.id == versionDetail.package.version.id); if (index != -1) { database.versions[index] = versionDetail; } else { database.versions.Add(versionDetail); } requestResponse.ok = true; requestResponse.result = versionDetail; } if (onCompleted != null) { onCompleted(requestResponse); } }); }