/// <summary>
        /// Gets the videos asynchronously.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public async Task <VideoSearchResponse> GetVideosAsync(VideoSearchRequest request)
        {
            request.Validate();

            var requestUrl = string.Format("{0}?q={1}", this.Url, WebUtility.UrlEncode(request.Query));

            if (request.Count > 0)
            {
                requestUrl = string.Format("{0}&count={1}", requestUrl, request.Count.ToString());
            }

            if (request.Offset >= 0)
            {
                requestUrl = string.Format("{0}&offset={1}", requestUrl, request.Offset.ToString());
            }

            if (!string.IsNullOrEmpty(request.Market))
            {
                requestUrl = string.Format("{0}&mkt={1}", requestUrl, request.Market);
            }

            requestUrl = string.Format("{0}&safeSearch={1}", requestUrl, request.SafeSearch.ToString());

            var responseJson = await this.SendGetAsync(requestUrl);

            var response = JsonConvert.DeserializeObject <VideoSearchResponse>(responseJson);

            return(response);
        }
 /// <summary>
 /// Gets the videos.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 public VideoSearchResponse GetVideos(VideoSearchRequest request)
 {
     return(GetVideosAsync(request).Result);
 }