Internal class providing certain utility functions to other classes.
示例#1
0
        /// <summary>
        /// Calculates the URL to redirect the user to Flickr web site for
        /// authentication. Used by desktop application.
        /// See <see cref="AuthGetFrob"/> for example code.
        /// </summary>
        /// <param name="frob">The FROB to be used for authentication.</param>
        /// <param name="authLevel">The <see cref="AuthLevel"/> stating the maximum authentication level your application requires.</param>
        /// <returns>The url to redirect the user to.</returns>
        public string AuthCalcUrl(string frob, AuthLevel authLevel)
        {
            if (sharedSecret == null)
            {
                throw new SignatureRequiredException();
            }

            string hash = sharedSecret + "api_key" + apiKey + "frob" + frob + "perms" + UtilityMethods.AuthLevelToString(authLevel);

            hash = UtilityMethods.MD5Hash(hash);
            string url = AuthUrl + "?api_key=" + apiKey + "&perms=" + UtilityMethods.AuthLevelToString(authLevel) + "&frob=" + frob;

            url += "&api_sig=" + hash;

            return(url);
        }
        void IFlickrParsable.Load(XmlReader reader)
        {
            if (reader.LocalName != "comment")
            {
                UtilityMethods.CheckParsingException(reader);
            }

            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "id":
                    CommentId = reader.Value;
                    break;

                case "author":
                    AuthorUserId = reader.Value;
                    break;

                case "authorname":
                    AuthorUserName = reader.Value;
                    break;

                case "permalink":
                    Permalink = reader.Value;
                    break;

                case "datecreate":
                    DateCreated = UtilityMethods.UnixTimestampToDate(reader.Value);
                    break;

                case "iconserver":
                    IconServer = reader.Value;
                    break;

                case "iconfarm":
                    IconFarm = reader.Value;
                    break;

                case "path_alias":
                    PathAlias = reader.Value;
                    break;

                case "realname":
                    AuthorRealName = reader.Value;
                    break;

                case "author_is_deleted":
                    AuthorIsDeleted = reader.Value == "1";
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();

            CommentHtml = reader.ReadContentAsString();

            reader.Skip();
        }
        void IFlickrParsable.Load(XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "created":
                    DateCreated = UtilityMethods.UnixTimestampToDate(reader.Value);
                    break;

                case "alpha":
                    Alpha = reader.ReadContentAsDouble();
                    break;

                case "count_points":
                    PointCount = reader.ReadContentAsInt();
                    break;

                case "count_edges":
                    EdgeCount = reader.ReadContentAsInt();
                    break;

                case "has_donuthole":
                    HasDonutHole = reader.Value == "1";
                    break;

                case "is_donuthole":
                    IsDonutHole = reader.Value == "1";
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();

            while (reader.NodeType != XmlNodeType.EndElement)
            {
                switch (reader.LocalName)
                {
                case "polylines":
                    reader.Read();
                    while (reader.LocalName == "polyline")
                    {
                        var      polyline   = new Collection <PointD>();
                        string   polystring = reader.ReadElementContentAsString();
                        string[] points     = polystring.Split(' ');
                        foreach (string point in points)
                        {
                            string[] xy = point.Split(',');
                            if (xy.Length != 2)
                            {
                                throw new ParsingException("Invalid polypoint found in polyline : '" + polystring +
                                                           "'");
                            }
                            polyline.Add(new PointD(double.Parse(xy[0], NumberFormatInfo.InvariantInfo),
                                                    double.Parse(xy[1], NumberFormatInfo.InvariantInfo)));
                        }
                        PolyLines.Add(polyline);
                    }
                    reader.Read();
                    break;

                case "urls":
                    reader.Skip();
                    break;
                }
            }

            reader.Read();
        }
示例#4
0
        /// <summary>
        /// Calculates the signature for an OAuth call.
        /// </summary>
        /// <param name="method">POST or GET method.</param>
        /// <param name="url">The URL the request will be sent to.</param>
        /// <param name="parameters">Parameters to be added to the signature.</param>
        /// <param name="tokenSecret">The token secret (either request or access) for generating the SHA-1 key.</param>
        /// <returns>Base64 encoded SHA-1 hash.</returns>
        public string OAuthCalculateSignature(string method, string url, Dictionary <string, string> parameters, string tokenSecret)
        {
            string baseString = "";
            string key        = ApiSecret + "&" + tokenSecret;

            byte[] keyBytes = System.Text.Encoding.UTF8.GetBytes(key);

#if !SILVERLIGHT
            var sorted = new SortedList <string, string>();
            foreach (KeyValuePair <string, string> pair in parameters)
            {
                sorted.Add(pair.Key, pair.Value);
            }
#else
            var sorted = parameters.OrderBy(p => p.Key);
#endif

            var sb = new StringBuilder();
            foreach (KeyValuePair <string, string> pair in sorted)
            {
                sb.Append(pair.Key);
                sb.Append("=");
                sb.Append(UtilityMethods.EscapeOAuthString(pair.Value));
                sb.Append("&");
            }

            sb.Remove(sb.Length - 1, 1);

            baseString = method + "&" + UtilityMethods.EscapeOAuthString(url) + "&" + UtilityMethods.EscapeOAuthString(sb.ToString());

#if WindowsCE
            FlickrNet.Security.Cryptography.HMACSHA1 sha1 = new FlickrNet.Security.Cryptography.HMACSHA1(keyBytes);
#else
            var sha1 = new System.Security.Cryptography.HMACSHA1(keyBytes);
#endif

            byte[] hashBytes = sha1.ComputeHash(System.Text.Encoding.UTF8.GetBytes(baseString));

            string hash = Convert.ToBase64String(hashBytes);

            return(hash);
        }
示例#5
0
        /// <summary>
        /// Returns the authorization URL for OAuth authorization, based off the request token and permissions provided.
        /// </summary>
        /// <param name="requestToken">The request token to include in the authorization url.</param>
        /// <param name="perms">The permissions being requested.</param>
        /// <param name="mobile">Should the url be generated be the mobile one or not.</param>
        /// <returns></returns>
        public string OAuthCalculateAuthorizationUrl(string requestToken, AuthLevel perms, bool mobile)
        {
            string permsString = (perms == AuthLevel.None) ? "" : "&perms=" + UtilityMethods.AuthLevelToString(perms);

            return("https://" + (mobile?"m":"www") + ".flickr.com/services/oauth/authorize?oauth_token=" + requestToken + permsString);
        }
示例#6
0
        private void LoadElements(System.Xml.XmlReader reader)
        {
            while (reader.LocalName != "photo")
            {
                switch (reader.LocalName)
                {
                case "owner":
                    ParseOwner(reader);
                    break;

                case "title":
                    Title = reader.ReadElementContentAsString();
                    break;

                case "description":
                    Description = reader.ReadElementContentAsString();
                    break;

                case "visibility":
                    ParseVisibility(reader);
                    break;

                case "permissions":
                    ParsePermissions(reader);
                    break;

                case "editability":
                    ParseEditability(reader);
                    break;

                case "publiceditability":
                    ParsePublicEditability(reader);
                    break;

                case "dates":
                    ParseDates(reader);
                    break;

                case "usage":
                    ParseUsage(reader);
                    break;

                case "comments":
                    CommentsCount = reader.ReadElementContentAsInt();
                    break;

                case "notes":
                    ParseNotes(reader);
                    break;

                case "tags":
                    ParseTags(reader);
                    break;

                case "urls":
                    ParseUrls(reader);
                    break;

                case "location":
                    Location = new PlaceInfo();
                    ((IFlickrParsable)Location).Load(reader);
                    break;

                case "geoperms":
                    GeoPermissions = new GeoPermissions();
                    ((IFlickrParsable)GeoPermissions).Load(reader);
                    break;

                case "video":
                    VideoInfo = new VideoInfo();
                    ((IFlickrParsable)VideoInfo).Load(reader);
                    break;

                case "people":
                    HasPeople = reader.GetAttribute("haspeople") == "1";
                    reader.Skip();
                    break;

                case "path_alias":
                    PathAlias = reader.Value;
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    reader.Skip();
                    break;
                }
            }

            reader.Skip();
        }
示例#7
0
        private void LoadAttributes(System.Xml.XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "id":
                    PhotoId = reader.Value;
                    break;

                case "secret":
                    Secret = reader.Value;
                    break;

                case "server":
                    Server = reader.Value;
                    break;

                case "farm":
                    Farm = reader.Value;
                    break;

                case "originalformat":
                    OriginalFormat = reader.Value;
                    break;

                case "originalsecret":
                    OriginalSecret = reader.Value;
                    break;

                case "dateuploaded":
                    DateUploaded = UtilityMethods.UnixTimestampToDate(reader.Value);
                    break;

                case "isfavorite":
                    IsFavorite = reader.Value == "1";
                    break;

                case "license":
                    License = (LicenseType)int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "views":
                    ViewCount = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "rotation":
                    Rotation = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "media":
                    Media = reader.Value == "photo" ? MediaType.Photos : MediaType.Videos;
                    break;

                case "safety_level":
                    SafetyLevel = (SafetyLevel)reader.ReadContentAsInt();
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();
        }
示例#8
0
        void IFlickrParsable.Load(XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "nsid":
                case "id":
                    GroupId = reader.Value;
                    break;

                case "iconserver":
                    IconServer = reader.Value;
                    break;

                case "iconfarm":
                    IconFarm = reader.Value;
                    break;

                case "lang":
                    Language = reader.Value;
                    break;

                case "ispoolmoderated":
                    IsPoolModerated = reader.Value == "1";
                    break;

                case "path_alias":
                    PathAlias = reader.Value == "" ? null : reader.Value;
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();

            while (reader.LocalName != "group")
            {
                switch (reader.LocalName)
                {
                case "name":
                    GroupName = reader.ReadElementContentAsString();
                    break;

                case "description":
                    Description = reader.ReadElementContentAsString();
                    break;

                case "members":
                    Members = reader.ReadElementContentAsInt();
                    break;

                case "privacy":
                    Privacy = (PoolPrivacy)reader.ReadElementContentAsInt();
                    break;

                case "blast":
                    BlastDateAdded = UtilityMethods.UnixTimestampToDate(reader.GetAttribute("date_blast_added"));
                    BlastUserId    = reader.GetAttribute("user_id");
                    BlastHtml      = reader.ReadElementContentAsString();
                    break;

                case "throttle":
                    ThrottleInfo = new GroupThrottleInfo();
                    ((IFlickrParsable)ThrottleInfo).Load(reader);
                    break;

                case "restrictions":
                    Restrictions = new GroupInfoRestrictions();
                    ((IFlickrParsable)Restrictions).Load(reader);
                    break;

                case "roles":
                    MemberRoleName    = reader.GetAttribute("member");
                    ModeratorRoleName = reader.GetAttribute("moderator");
                    AdminRoleName     = reader.GetAttribute("admin");
                    reader.Read();
                    break;

                case "rules":
                    Rules = reader.ReadElementContentAsString();
                    break;

                case "pool_count":
                    PoolCount = reader.ReadElementContentAsInt();
                    break;

                case "topic_count":
                    TopicCount = reader.ReadElementContentAsInt();
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    reader.Skip();
                    break;
                }
            }

            reader.Read();
        }
示例#9
0
        void IFlickrParsable.Load(XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "nsid":
                    GroupId = reader.Value;
                    break;

                case "name":
                    GroupName = reader.Value;
                    break;

                case "admin":
                    IsAdmin = reader.Value == "1";
                    break;

                case "eighteenplus":
                    EighteenPlus = reader.Value == "1";
                    break;

                case "invitation_only":
                    InvitationOnly = reader.Value == "1";
                    break;

                case "iconfarm":
                    IconFarm = reader.Value;
                    break;

                case "iconserver":
                    IconServer = reader.Value;
                    break;

                case "members":
                    Members = reader.ReadContentAsInt();
                    break;

                case "pool_count":
                    PoolCount = reader.ReadContentAsLong();
                    break;

                case "is_member":
                    IsMember = reader.Value == "1";
                    break;

                case "is_moderator":
                    IsModerator = reader.Value == "1";
                    break;

                case "is_admin":
                    IsAdmin = reader.Value == "1";
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();
        }
示例#10
0
        private void LoadAttributes(System.Xml.XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "id":
                case "nsid":
                    UserId = reader.Value;
                    break;

                case "ispro":
                    IsPro = reader.Value == "1";
                    break;

                case "iconserver":
                    IconServer = reader.Value;
                    break;

                case "iconfarm":
                    IconFarm = reader.Value;
                    break;

                case "path_alias":
                    PathAlias = reader.Value;
                    break;

                case "gender":
                    Gender = reader.Value;
                    break;

                case "ignored":
                    IsIgnored = reader.Value == "1";
                    break;

                case "contact":
                    IsContact = reader.Value == "1";
                    break;

                case "friend":
                    IsFriend = reader.Value == "1";
                    break;

                case "family":
                    IsFamily = reader.Value == "1";
                    break;

                case "revcontact":
                    IsReverseContact = reader.Value == "1";
                    break;

                case "revfriend":
                    IsReverseFriend = reader.Value == "1";
                    break;

                case "revfamily":
                    IsReverseFamily = reader.Value == "1";
                    break;

                case "can_buy_pro":
                    CanBuyPro = reader.Value == "1";
                    break;

                case "has_stats":
                    HasStats = reader.Value == "1";
                    break;

                case "expire":
                    // TODO: Not sure what the 'expire' attribute signifies. Is it a Bool?
                    break;

                case "pro_badge":
                    ProBadgeStyle = reader.Value;
                    break;

                case "upload_count":
                {
                    UploadCount = int.TryParse(reader.Value, out int i) ? (int?)i : null;
                    break;
                }

                case "upload_limit":
                {
                    if (reader.Value != "-1")
                    {
                        UploadLimit = int.TryParse(reader.Value, out int i) ? (int?)i : null;
                    }
                    break;
                }

                case "upload_limit_status":
                    UploadLimitStatus = reader.Value;
                    break;

                case "is_cognito_user":
                case "all_rights_reserved_photos_count":
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();
        }
示例#11
0
        private void LoadAttributes(System.Xml.XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "name":
                    Description = reader.Value;
                    break;

                case "place_id":
                    PlaceId = reader.Value;
                    break;

                case "place_url":
                    PlaceUrl = reader.Value;
                    break;

                case "place_type_id":
                    PlaceType = (PlaceType)reader.ReadContentAsInt();
                    break;

                case "place_type":
                    PlaceType = (PlaceType)Enum.Parse(typeof(PlaceType), reader.Value, true);
                    break;

                case "woeid":
                    WoeId = reader.Value;
                    break;

                case "latitude":
                    Latitude = reader.ReadContentAsDouble();
                    break;

                case "longitude":
                    Longitude = reader.ReadContentAsDouble();
                    break;

                case "accuracy":
                    Accuracy = (GeoAccuracy)reader.ReadContentAsInt();
                    break;

                case "context":
                    Context = (GeoContext)reader.ReadContentAsInt();
                    break;

                case "timezone":
                    TimeZone = reader.Value;
                    break;

                case "has_shapedata":
                    HasShapeData = reader.Value == "1";
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();
        }
示例#12
0
 /// <summary>
 /// Takes the various properties of this instance and adds them to a <see cref="Dictionary{K,V}"/> instanced passed in, ready for sending to Flickr.
 /// </summary>
 /// <param name="parameters">The <see cref="Dictionary{K,V}"/> to add the options to.</param>
 public void AddToDictionary(Dictionary <string, string> parameters)
 {
     if (UserId != null && UserId.Length > 0)
     {
         parameters.Add("user_id", UserId);
     }
     if (GroupId != null && GroupId.Length > 0)
     {
         parameters.Add("group_id", GroupId);
     }
     if (Text != null && Text.Length > 0)
     {
         parameters.Add("text", Text);
     }
     if (Tags != null && Tags.Length > 0)
     {
         parameters.Add("tags", Tags);
     }
     if (TagMode != TagMode.None)
     {
         parameters.Add("tag_mode", UtilityMethods.TagModeToString(TagMode));
     }
     if (MachineTags != null && MachineTags.Length > 0)
     {
         parameters.Add("machine_tags", MachineTags);
     }
     if (MachineTagMode != MachineTagMode.None)
     {
         parameters.Add("machine_tag_mode", UtilityMethods.MachineTagModeToString(MachineTagMode));
     }
     if (MinUploadDate != DateTime.MinValue)
     {
         parameters.Add("min_upload_date", UtilityMethods.DateToUnixTimestamp(MinUploadDate).ToString());
     }
     if (MaxUploadDate != DateTime.MinValue)
     {
         parameters.Add("max_upload_date", UtilityMethods.DateToUnixTimestamp(MaxUploadDate).ToString());
     }
     if (MinTakenDate != DateTime.MinValue)
     {
         parameters.Add("min_taken_date", UtilityMethods.DateToMySql(MinTakenDate));
     }
     if (MaxTakenDate != DateTime.MinValue)
     {
         parameters.Add("max_taken_date", UtilityMethods.DateToMySql(MaxTakenDate));
     }
     if (Licenses.Count != 0)
     {
         List <string> licenseArray = new List <string>();
         foreach (LicenseType license in Licenses)
         {
             licenseArray.Add(license.ToString("d"));
         }
         parameters.Add("license", String.Join(",", licenseArray.ToArray()));
     }
     if (PerPage != 0)
     {
         parameters.Add("per_page", PerPage.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
     }
     if (Page != 0)
     {
         parameters.Add("page", Page.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
     }
     if (Extras != PhotoSearchExtras.None)
     {
         parameters.Add("extras", ExtrasString);
     }
     if (SortOrder != PhotoSearchSortOrder.None)
     {
         parameters.Add("sort", SortOrderString);
     }
     if (PrivacyFilter != PrivacyFilter.None)
     {
         parameters.Add("privacy_filter", PrivacyFilter.ToString("d"));
     }
     if (BoundaryBox != null && BoundaryBox.IsSet)
     {
         parameters.Add("bbox", BoundaryBox.ToString());
     }
     if (Accuracy != GeoAccuracy.None)
     {
         parameters.Add("accuracy", Accuracy.ToString("d"));
     }
     if (SafeSearch != SafetyLevel.None)
     {
         parameters.Add("safe_search", SafeSearch.ToString("d"));
     }
     if (ContentType != ContentTypeSearch.None)
     {
         parameters.Add("content_type", ContentType.ToString("d"));
     }
     if (HasGeo != null)
     {
         parameters.Add("has_geo", HasGeo.Value ? "1" : "0");
     }
     if (Latitude != null)
     {
         parameters.Add("lat", Latitude.Value.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
     }
     if (Longitude != null)
     {
         parameters.Add("lon", Longitude.Value.ToString(System.Globalization.NumberFormatInfo.InvariantInfo));
     }
     if (Radius != null)
     {
         parameters.Add("radius", Radius.Value.ToString("0.00000", System.Globalization.NumberFormatInfo.InvariantInfo));
     }
     if (RadiusUnits != RadiusUnit.None)
     {
         parameters.Add("radius_units", (RadiusUnits == RadiusUnit.Miles ? "mi" : "km"));
     }
     if (Contacts != ContactSearch.None)
     {
         parameters.Add("contacts", (Contacts == ContactSearch.AllContacts ? "all" : "ff"));
     }
     if (WoeId != null)
     {
         parameters.Add("woe_id", WoeId);
     }
     if (PlaceId != null)
     {
         parameters.Add("place_id", PlaceId);
     }
     if (IsCommons)
     {
         parameters.Add("is_commons", "1");
     }
     if (InGallery)
     {
         parameters.Add("in_gallery", "1");
     }
     if (IsGetty)
     {
         parameters.Add("is_getty", "1");
     }
     if (MediaType != MediaType.None)
     {
         parameters.Add("media", UtilityMethods.MediaTypeToString(MediaType));
     }
     if (GeoContext != GeoContext.NotDefined)
     {
         parameters.Add("geo_context", GeoContext.ToString("d"));
     }
     if (Faves)
     {
         parameters.Add("faves", "1");
     }
     if (PersonId != null)
     {
         parameters.Add("person_id", PersonId);
     }
     if (Camera != null)
     {
         parameters.Add("camera", Camera);
     }
     if (JumpTo != null)
     {
         parameters.Add("jump_to", JumpTo);
     }
 }
示例#13
0
        private void LoadAttributes(XmlReader reader)
        {
            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "type":
                    switch (reader.Value)
                    {
                    case "photoset":
                        ItemType = ActivityItemType.Photoset;
                        break;

                    case "photo":
                        ItemType = ActivityItemType.Photo;
                        break;

                    case "gallery":
                        ItemType = ActivityItemType.Gallery;
                        break;
                    }
                    break;

                case "media":
                    switch (reader.Value)
                    {
                    case "photo":
                        Media = MediaType.Photos;
                        break;

                    case "video":
                        Media = MediaType.Videos;
                        break;
                    }
                    break;

                case "owner":
                    OwnerId = reader.Value;
                    break;

                case "ownername":
                    OwnerName = reader.Value;
                    break;

                case "id":
                    Id = reader.Value;
                    break;

                case "secret":
                    Secret = reader.Value;
                    break;

                case "server":
                    Server = reader.Value;
                    break;

                case "farm":
                    Farm = reader.Value;
                    break;

                case "iconserver":
                    OwnerServer = reader.Value;
                    break;

                case "iconfarm":
                    OwnerFarm = reader.Value;
                    break;

                case "commentsnew":
                    NewComments = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "commentsold":
                    OldComments = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "comments":
                    Comments = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "views":
                    Views = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "photos":
                    Photos = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "more":
                    More = reader.Value == "0";
                    break;

                case "primary":
                    PrimaryPhotoId = reader.Value;
                    break;

                case "notesnew":
                    NewNotes = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "notesold":
                    OldNotes = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "notes":
                    Notes = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "faves":
                    Favorites = int.Parse(reader.Value, System.Globalization.NumberFormatInfo.InvariantInfo);
                    break;

                case "realname":
                    RealName = reader.Value;
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();
        }
示例#14
0
        void IFlickrParsable.Load(XmlReader reader)
        {
            if (reader.LocalName != "camera")
            {
                UtilityMethods.CheckParsingException(reader);
            }

            while (reader.MoveToNextAttribute())
            {
                switch (reader.LocalName)
                {
                case "id":
                    CameraId = reader.Value;
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Read();

            while (reader.LocalName != "camera")
            {
                switch (reader.LocalName)
                {
                case "details":
                case "images":
                    reader.Read();
                    break;

                case "name":
                    CameraName = reader.ReadElementContentAsString();
                    break;

                case "megapixels":
                    MegaPixels = reader.ReadElementContentAsString();
                    break;

                case "lcd_screen_size":
                    LcdScreenSize = reader.ReadElementContentAsString();
                    break;

                case "memory_type":
                    MemoryType = reader.ReadElementContentAsString();
                    break;

                case "small":
                    SmallImage = reader.ReadElementContentAsString();
                    break;

                case "large":
                    LargeImage = reader.ReadElementContentAsString();
                    break;

                default:
                    UtilityMethods.CheckParsingException(reader);
                    break;
                }
            }

            reader.Skip();
        }