private YoutubeAPIModel SearchCore(string Query, string RelatedToVideoId, string NextPageToken)
        {
            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey          = WebConfigurationManager.AppSettings["YoutubeAPIKey"],
                ApplicationName = "trailer"
            });

            var searchListRequest = youtubeService.Search.List("snippet");

            searchListRequest.MaxResults = 20;
            searchListRequest.Type       = "video";

            if (Query != null && !Query.Equals(""))
            {
                searchListRequest.Q = Query;
            }

            if (NextPageToken != null && !NextPageToken.Equals(""))
            {
                searchListRequest.PageToken = NextPageToken;
            }

            if (RelatedToVideoId != null && !RelatedToVideoId.Equals(""))
            {
                searchListRequest.RelatedToVideoId = RelatedToVideoId;
            }

            var searchListResponse = searchListRequest.Execute();

            YoutubeAPIModel results = new YoutubeAPIModel();

            results.Query         = Query;
            results.NextPageToken = searchListResponse.NextPageToken;

            List <YoutubeAPIModelItem> videos = new List <YoutubeAPIModelItem>();

            foreach (var searchResult in searchListResponse.Items)
            {
                switch (searchResult.Id.Kind)
                {
                case "youtube#video":
                    YoutubeAPIModelItem item = new YoutubeAPIModelItem();
                    item.Title          = searchResult.Snippet.Title;
                    item.YoutubeVideoId = searchResult.Id.VideoId;
                    item.ChannelTitle   = searchResult.Snippet.ChannelTitle;
                    item.ChannelId      = searchResult.Snippet.ChannelId;
                    item.ThumbnailUrl   = searchResult.Snippet.Thumbnails.High.Url;
                    item.Description    = searchResult.Snippet.Description;
                    videos.Add(item);
                    break;
                }
            }

            results.Videos = videos;

            return(results);
        }
        public YoutubeAPIModel Search([FromBody] YoutubeAPIModel input)
        {
            if (input == null || input.Query == null)
            {
                input       = new YoutubeAPIModel();
                input.Query = "trailer";
            }

            if (!input.Query.Contains("trailer"))
            {
                input.Query += " trailer";
            }
            YoutubeAPIModel response = youtubeAPIService.SearchQuery(input);

            return(response);
        }
 public YoutubeAPIModel RelatedVideos(YoutubeAPIModel input)
 {
     return(SearchCore(null, input.RelatedToVideoId, input.NextPageToken));
 }
 public YoutubeAPIModel SearchQuery(YoutubeAPIModel input)
 {
     return(SearchCore(input.Query, null, input.NextPageToken));
 }