public async Task <List <AssetEntity> > SearchForVideoAsync(VideoSearchResponse videoSearchResponse)
 {
     // TODO: More robust search mechanism -- Currently just pull top 10 most recent uploaded videos. Searching
     // Require it's own service.
     if (videoSearchResponse == null)
     {
         return(await _assetContext.SearchForAssets(null));
     }
     // TODO: Don't just throw an exception. Use a strategy
     throw new NotImplementedException("Support of searching assets not supported.");
 }
        public void Is_Youtube_Active()
        {
            VideoSearchRequest searchParams = new VideoSearchRequest();

            searchParams.SearchQuery = "Undisputed";
            IVideoProvider      youtube = new YoutubeVideoProvider();
            VideoSearchResponse result  = youtube.SearchVideo(searchParams);

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Data);
            Assert.AreEqual((RequestStatus)result.Status, RequestStatus.Success);
        }
        /// <summary>
        /// Function to search for videos. Uses an endpoint for video search
        /// </summary>
        /// <param name="query">The query to search for</param>
        /// <returns>The <see cref="VideoSearchResponse"/>, containing video details</returns>
        public async Task <VideoSearchResponse> SearchVideos(string query)
        {
            string endpoint = string.Format("{0}{1}", "https://api.cognitive.microsoft.com/bing/v5.0/videos/search?q=", query);

            try
            {
                VideoSearchResponse response = await _webRequest.MakeRequest <VideoSearchResponse>(endpoint);

                return(response);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            return(null);
        }
        /// <summary>
        /// Function to parse the video response. Will display video duration, video URL and video name in the UI
        /// </summary>
        /// <param name="videoResponse"></param>
        private void ParseVideoResponse(VideoSearchResponse videoResponse)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("Video search results:\n\n");
            sb.AppendFormat("# of results: {0}\n\n", videoResponse.totalEstimatedMatches);

            foreach (VideoValue video in videoResponse.value)
            {
                sb.AppendFormat("\tVideo name: {0}\n\tVideo duration: {1}\n\tVideo URL: {2}\t\n", video.name, video.duration, video.contentUrl);

                foreach (Publisher publisher in video.publisher)
                {
                    sb.AppendFormat("\tPublisher: {0}\n", publisher.name);
                }

                sb.Append("\n");
            }

            SearchResult = sb.ToString();
        }
Beispiel #5
0
        public void Search_Video_Service_Must_Have_Result()
        {
            VideoController    controller = new VideoController();
            VideoSearchRequest request    = new VideoSearchRequest();

            request.MaxResult         = 50;
            request.SearchQuery       = "google";
            request.TransactionId     = Guid.NewGuid();
            request.VerificationToken = Guid.NewGuid().ToString();// MVC antiforgery token can be provided.
            VideoSearchResponse response = controller.SearchVideo(request);

            // object must be null
            Assert.IsNotNull(response);

            // must have data
            Assert.IsNotNull(response.Data);

            // must be successfull
            Assert.AreEqual <RequestStatus>(response.Status, RequestStatus.Success);

            //if there is no item fail test
            Assert.AreEqual <int>(response.Data.Count, 0);
        }
Beispiel #6
0
        public VideoSearchResponse SearchVideo([FromUri] VideoSearchRequest searhRequest)
        {
            // one provider request can be fail but the other can be success. So the webapi result should be success. No need to control if one is success or not below. If both provider req fails api should fail.
            VideoSearchResponse response = new VideoSearchResponse()
            {
                Status = RequestStatus.Fail
            };

            response.Data = new VideoItemCollection();
            this.RunSafely(() =>
            {
                //Validation vide search request
                VideSearchRequestValidator requestValidator = new VideSearchRequestValidator();
                ValidationResult result = requestValidator.Validate(searhRequest);
                if (!result.IsValid)
                {
                    result.CopyToDictionary(response.UserFriendlyErrorMesages);
                    // request is not validated. So no need to continue
                    return;
                }

                #region | Moved To VideoHelper.Search() |

                //VideoItemCollection tempVideoList = null;
                //VideSearchResponse tempResponse = null;
                //LuceneHelper lucene = new LuceneHelper();

                ////Each provider attached to Demo app, make search request.
                //foreach (IVideoProvider eachProvider in VideoServiceFoundation.Current.VideoProviders)
                //{
                //    tempResponse = eachProvider.SearchVideo(searhRequest);
                //    if (tempResponse != null)
                //    {
                //        //request is succesfully done, so get data from request.
                //        if (tempResponse.Status == RequestStatus.Success)
                //        {
                //            response.Success(); // If one request is success and the other is fail, result should be success
                //            if (tempResponse.Data != null)
                //            {
                //                tempVideoList = tempResponse.Data;
                //                response.Data.AddRange(tempVideoList);

                //                //Add data to cache and search index
                //                ApplicationFoundation.Current.CacheService.Set(searhRequest.SearchQuery, tempVideoList, int.MaxValue);
                //                lucene.AddToIndex(searhRequest.SearchQuery);
                //            }
                //        }
                //    }
                //}
                //tempVideoList = null;
                //tempResponse = null;

                #endregion | Moved To VideoHelper.Search() |

                VideSearchHelper searchHelper = new VideSearchHelper();
                response = searchHelper.Search(searhRequest);
            }, (ex) =>
            {
                response.Error("VideoSearchApi_Error", ex.Message);
            });
            return(response);
        }