예제 #1
0
        /// <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");
        }
예제 #2
0
 /// <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));
 }