Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
                }
            });
        }