/// <summary>
 /// Преобразует строковое представление json ответа в эквивалентный ему класс <see cref="ShareInfo"/>. Возвращает значение, указывающее, успешно ли выполнено преобразование.
 /// </summary>
 /// <param name="s">Строка, содержащая преобразуемый json ответ.</param>
 /// <param name="result">При возвращении этим методом содержиткласс <see cref="ShareInfo"/>, эквивалентный json ответу, содержащемуся в параметре s, если преобразование выполнено успешно, или null, если оно завершилось сбоем. Преобразование завершается сбоем, если параметр s равен null или <see cref="System.String.Empty"/> или не находится в правильном формате. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в объекте result, будет перезаписано.</param>
 /// <returns>Значение true, если параметр s успешно преобразован; в противном случае — значение false.</returns>
 public static bool TryParse(string s, out ShareInfo result)
 {
     try
     {
         result = Parse(s);
         return(true);
     }
     catch
     {
         result = null;
         return(false);
     }
 }
Example #2
0
        internal Resource(JsonTextReader jsonReader)
        {
            int depth = jsonReader.Depth;

            while (jsonReader.Read())
            {
                switch (jsonReader.TokenType)
                {
                case JsonToken.PropertyName:
                    switch (jsonReader.Value.ToString())
                    {
                    case "public_key":
                        publicKey = jsonReader.ReadAsString();
                        break;

                    case "_embedded":
                        embedded = new ResourceList(jsonReader);
                        break;

                    case "name":
                        name = jsonReader.ReadAsString();
                        break;

                    case "created":
                        created = jsonReader.ReadAsDateTime().Value;
                        break;

                    case "custom_properties":
                        IDictionary <string, string> customProperties = new Dictionary <string, string>();
                        int depth2 = jsonReader.Depth;
                        while (jsonReader.Read())
                        {
                            if (jsonReader.TokenType == JsonToken.PropertyName)
                            {
                                customProperties.Add(jsonReader.Value.ToString(), jsonReader.ReadAsString());
                            }
                            else if (jsonReader.TokenType == JsonToken.EndObject)
                            {
                                if (jsonReader.Depth == depth2)
                                {
                                    break;
                                }
                            }
                        }
                        customProperties = new ReadOnlyDictionary <string, string>(customProperties);
                        break;

                    case "public_url":
                        publicUrl = new Uri(jsonReader.ReadAsString());
                        break;

                    case "origin_path":
                        originPath = jsonReader.ReadAsString();
                        break;

                    case "modified":
                        modified = jsonReader.ReadAsDateTime().Value;
                        break;

                    case "path":
                        path = jsonReader.ReadAsString();
                        break;

                    case "md5":
                        md5 = jsonReader.ReadAsString();
                        break;

                    case "type":
                        type = jsonReader.ReadAsString() == "file" ? Type.file : Type.dir;
                        break;

                    case "mime_type":
                        mimeType = jsonReader.ReadAsString();
                        break;

                    case "size":
                        size = long.Parse(jsonReader.ReadAsString());
                        break;

                    case "sha256":
                        sha256 = jsonReader.ReadAsString();
                        break;

                    case "revision":
                        revision = long.Parse(jsonReader.ReadAsString());
                        break;

                    case "media_type":
                        mediaType = jsonReader.ReadAsString();
                        break;

                    case "preview":
                        preview = new Uri(jsonReader.ReadAsString());
                        break;

                    case "resource_id":
                        resourceId = jsonReader.ReadAsString();
                        break;

                    case "comment_ids":
                        commentIds = new CommentIds(jsonReader);
                        break;

                    case "share":
                        share = new ShareInfo(jsonReader);
                        break;

                    case "views_count":
                        viewsCount = jsonReader.ReadAsInt32();
                        break;

                    case "owner":
                        owner = new UserPublicInformation(jsonReader);
                        break;
                    }
                    break;

                case JsonToken.EndObject:
                    if (jsonReader.Depth == depth)
                    {
                        return;
                    }
                    break;
                }
            }
        }