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()); }
/// <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); }