Beispiel #1
0
        public void ShouldValidateResponseForExtrasOption()
        {
            var proxyMock = new Mock <IFlickrElement>();

            proxyMock.Setup(x => x.GetResponseElement(It.IsAny <string>()))
            .Returns((string url) => ReadResource(url));

            IPhotoRepository repository = new PhotoRepository(proxyMock.Object);

            ExtrasOption options = (ExtrasOption.Views
                                    | ExtrasOption.Date_Taken
                                    | ExtrasOption.Date_Upload
                                    | ExtrasOption.Tags
                                    | ExtrasOption.Date_Upload);


            var photos = repository.Search(1, 10, PhotoSize.Default, "abc", "extras", options.ToExtrasString());

            Assert.IsNotNull(photos.First().Title);

            Assert.AreNotEqual(photos.First().UploadedOn, InvalidDate);
            Assert.AreNotEqual(photos.First().TakeOn, InvalidDate);
            Assert.AreEqual(photos.First().UpdatedOn, InvalidDate);

            Assert.AreEqual(33, photos.First().Views);
            Assert.AreEqual(2, photos.First().Tags.Length);
            Assert.AreEqual("date_taken,date_upload,tags,views", options.ToExtrasString());
        }
Beispiel #2
0
        /// <summary>
        /// Converts the ExtrasOptions enum to its equavalent string representation.
        /// </summary>
        /// <param name="extras">Enum</param>
        /// <returns>string</returns>
        internal static string ToExtrasString(this ExtrasOption extras)
        {
            List <string> list = new List <string>();

            if ((extras & ExtrasOption.Date_Taken) == ExtrasOption.Date_Taken)
            {
                list.Add(ExtrasOption.Date_Taken.ToString());
            }
            if ((extras & ExtrasOption.Date_Upload) == ExtrasOption.Date_Upload)
            {
                list.Add(ExtrasOption.Date_Upload.ToString());
            }
            if ((extras & ExtrasOption.Icon_Server) == ExtrasOption.Icon_Server)
            {
                list.Add(ExtrasOption.Icon_Server.ToString());
            }
            if ((extras & ExtrasOption.License) == ExtrasOption.License)
            {
                list.Add(ExtrasOption.License.ToString());
            }
            if ((extras & ExtrasOption.Owner_Name) == ExtrasOption.Owner_Name)
            {
                list.Add(ExtrasOption.Owner_Name.ToString());
            }
            if ((extras & ExtrasOption.Original_Format) == ExtrasOption.Original_Format)
            {
                list.Add(ExtrasOption.Owner_Name.ToString());
            }
            if ((extras & ExtrasOption.Last_Update) == ExtrasOption.Last_Update)
            {
                list.Add(ExtrasOption.Last_Update.ToString());
            }
            if ((extras & ExtrasOption.Tags) == ExtrasOption.Tags)
            {
                list.Add(ExtrasOption.Tags.ToString());
            }
            if ((extras & ExtrasOption.Geo) == ExtrasOption.Geo)
            {
                list.Add(ExtrasOption.Geo.ToString());
            }
            if ((extras & ExtrasOption.Views) == ExtrasOption.Views)
            {
                list.Add(ExtrasOption.Views.ToString());
            }
            if ((extras & ExtrasOption.Media) == ExtrasOption.Media)
            {
                list.Add(ExtrasOption.Media.ToString());
            }

            return(string.Join(",", list.ToArray()).ToLower());
        }
        private static string[] ProcessSearchQuery(IPhotoRepository flickr, ViewMode viewMode)
        {
            string nsId = string.Empty;
            var    args = new NameValueCollection();

            Bucket.Instance.For.EachItem.Process(delegate(BucketItem item)
            {
                /// must be mapped to flickr.
                if (item.FindAttribute(typeof(OriginalFieldNameAttribute)) != null)
                {
                    if (item.Value != null)
                    {
                        string value = Convert.ToString(item.Value);
                        // fix for tagMode
                        if (string.Compare(item.Name, "tag_mode") == 0)
                        {
                            TagMode tagMode = (TagMode)item.Value;
                            value           = tagMode == TagMode.AND ? "all" : "any";
                        }

                        if (!string.IsNullOrEmpty(value))
                        {
                            string key = string.Empty;

                            if (string.Compare(item.Name, "user") == 0)
                            {
                                key = "user_id";
                                if (value.IsValidEmail())
                                {
                                    nsId = flickr.GetNsidByEmail(value);
                                }
                                else
                                {
                                    nsId = flickr.GetNsidByUsername(value);
                                }
                                // set the new nslid
                                if (!string.IsNullOrEmpty(nsId))
                                {
                                    value = nsId;
                                }
                            }
                            else if (string.Compare(item.Name, "text") == 0)
                            {
                                SearchMode searchMode = Bucket.Instance.For.Item(PhotoColumns.SearchMode).Value == null ? SearchMode.FreeText : (SearchMode)Bucket.Instance.For.Item(PhotoColumns.SearchMode).Value;
                                key = searchMode == SearchMode.TagsOnly ? "tags" : item.Name;
                            }

                            else if (string.Compare(item.Name, "extras") == 0)
                            {
                                ExtrasOption extras = Bucket.Instance.For.Item(PhotoColumns.Extras).Value == null ? ExtrasOption.None : (ExtrasOption)Bucket.Instance.For.Item(PhotoColumns.Extras).Value;
                                key   = item.Name;
                                value = extras.ToExtrasString();
                            }
                            else
                            {
                                key = item.Name;
                            }
                            args[key] = value;
                        }
                    } // end if (item.Value != null))
                }     // end if (item.Name != PhotoColumns.Photosize)
            });

            bool sortUsed = false;

            Bucket.Instance.Entity.OrderBy.IfUsed.Process(delegate(string fieldName, bool isAscending)
            {
                args["sort"] = GetSortOrder(fieldName, isAscending);
                sortUsed     = true;
            });

            if (!sortUsed)
            {
                /// default is relevance
                args["sort"] = GetSortOrder(string.Empty, false);
            }


            /// not user id is provided and , owner is specified then get my photos.
            if (viewMode == ViewMode.Owner && string.IsNullOrEmpty((string)Bucket.Instance.For.Item(PhotoColumns.User).Value))
            {
                args["user_id"] = "me";
            }

            var results = new string[args.Count * 2];

            int index = 0;

            foreach (string result in  args.AllKeys)
            {
                results[index++] = result;
                results[index++] = args[result];
            }

            return(results);
        }