public static YoutubeVideo FromSingleVideo(string uri)
    {
      var uriConverter = new UriConverter(new WebClientImpl());
      var videoId = uriConverter.GetVideoId(uri);
      var gdataUri = uriConverter.FromYoutubeVideoToGDataVideo(videoId);

      var webClient = new WebClientImpl();
      var responseXml = webClient.DownloadString(gdataUri);

      var responseDocument = XDocument.Parse(responseXml, LoadOptions.SetBaseUri);

      XNamespace atom = "http://www.w3.org/2005/Atom";
      var titleElement = responseDocument.Root.Element(atom + "title");
      var videoTitle = titleElement != null ? titleElement.Value : string.Empty;

      var flvUri = uriConverter.GetFlvUriFromYoutubeVideoUri(videoId);

      return string.IsNullOrEmpty(flvUri) ?
        null : new YoutubeVideo
         {
           FlvUri = flvUri,
           Link = uri,
           Title = videoTitle
         };
    }
    public void FromYoutubeVideoToGDataVideo_WithSingleVideoUri()
    {
      var uriConverter = new UriConverter(_webClient.Object);

      var videoId = "test";
      var expectedUri = "http://gdata.youtube.com/feeds/api/videos/test";

      Assert.AreEqual(expectedUri, uriConverter.FromYoutubeVideoToGDataVideo(videoId));
    }