/// <summary> /// Queries a particular Google service using query parameters. /// </summary> /// <typeparam name="TFeed">Type of feed for the service.</typeparam> /// <typeparam name="TEntry">Type of feed entry for the service.</typeparam> /// <param name="query"><seealso cref="IGQuery"/> object, filled with data.</param> /// <returns>An atom feed for the particular Google service.</returns> protected virtual TFeed Query <TFeed, TEntry>(IGQuery query) where TFeed : GFeed <TEntry>, new() where TEntry : GEntry, new() { if (String.IsNullOrEmpty(GUrl)) { throw new ArgumentNullException(GUrl, "Feed Url is not provided. Please provide Feed url first through GUrl Property."); } string queryUrl = GUrl + "?" + query.GetQueryUrl(); var queryUri = new Uri(queryUrl); var request = WebRequest.Create(queryUri) as HttpWebRequest; if (request != null) { if (ProxySettings != null) { request.Proxy = ProxySettings; } request.Credentials = new NetworkCredential(GUserName, GPassword); var webData = new GWebAsyncData <TFeed, TEntry> { Request = request, ResetEvent = new ManualResetEvent(false) }; IAsyncResult result = request.BeginGetResponse(AsyncManager <TFeed, TEntry> .AsyncDownloadAllFeeds, webData); ((GWebAsyncData <TFeed, TEntry>)result.AsyncState).ResetEvent.WaitOne(); return(((GWebAsyncData <TFeed, TEntry>)result.AsyncState).FeedResult); } throw new OutOfMemoryException("Unable to create new WebRequest"); }
/// <summary> /// Queries the project service to get issues depending on certain query parameters. /// </summary> /// <param name="query">The data about the query paramteres.</param> /// <returns>Issues satisfying the query.</returns> public IssuesFeed Query(IGQuery query) { GUrl = "http://code.google.com/feeds/issues/p/" + ProjectName + "/issues/full"; return base.Query<IssuesFeed, IssuesEntry>(query); }
/// <summary> /// Queries the project service to get issues depending on certain query parameters. /// </summary> /// <param name="query">The data about the query paramteres.</param> /// <returns>Issues satisfying the query.</returns> public IssuesFeed Query(IGQuery query) { GUrl = "http://code.google.com/feeds/issues/p/" + ProjectName + "/issues/full"; return(base.Query <IssuesFeed, IssuesEntry>(query)); }