示例#1
0
        void FinanceService_NewFeed(object sender, ServiceEventArgs e)
        {
            Tracing.TraceMsg("Created new Portfolio Feed");

            int i = e.Uri.AbsoluteUri.IndexOf("/" + "portfolios");
            int p = e.Uri.AbsoluteUri.IndexOf("/" + "positions");
            int t = e.Uri.AbsoluteUri.IndexOf("/" + "transactions");

            // TODO: This sucks, it needs to be changed to parse out the Feeds correcly.
            if (e == null)
            {
                throw new ArgumentNullException("e");
            }
            else if (e.Uri.AbsoluteUri.IndexOf("/" + "transactions") != -1)
            {
                e.Feed = new TransactionFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsoluteUri.IndexOf("/" + "positions") != -1)
            {
                e.Feed = new PositionFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsoluteUri.IndexOf("/" + "portfolios") != -1)
            {
                e.Feed = new PortfolioFeed(e.Uri, e.Service);
            }
        }
示例#2
0
 public void UriTest()
 {
     Uri uri = new Uri("http://www.test.com/");
     IService service = new Service();
     ServiceEventArgs target = new ServiceEventArgs(uri, service); // TODO: Initialize to an appropriate value
     Uri actual;
     actual = target.Uri;
     Assert.AreEqual(actual, uri);
 }
示例#3
0
 //////////////////////////////////////////////////////////////////////
 /// <summary>eventchaining. We catch this by from the base service, which 
 /// would not by default create an atomFeed</summary> 
 /// <param name="sender"> the object which send the event</param>
 /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
 /// <returns> </returns>
 //////////////////////////////////////////////////////////////////////
 protected void OnNewFeed(object sender, ServiceEventArgs e)
 {
     Tracing.TraceMsg("Created new Calendar Feed");
     if (e == null)
     {
         throw new ArgumentNullException("e"); 
     }
     e.Feed = new BloggerFeed(e.Uri, e.Service);
 }
示例#4
0
        /// <summary>eventchaining. We catch this by from the base service, which 
        /// would not by default create an atomFeed</summary> 
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
        /// <returns> </returns>
        protected void OnNewFeed(object sender, ServiceEventArgs e) {
            Tracing.TraceMsg("Created new Contacts Feed");
            if (e == null) {
                throw new ArgumentNullException("e");
            }

            if (e.Uri.AbsolutePath.IndexOf("/m8/feeds/groups/") != -1) {
                e.Feed = new GroupsFeed(e.Uri, e.Service);
            } else {
                e.Feed = new ContactsFeed(e.Uri, e.Service);
            }
        }
示例#5
0
        /// <summary>eventchaining. We catch this by from the base service, which
        /// would not by default create an atomFeed</summary>
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param>
        /// <returns> </returns>
        protected void OnNewFeed(object sender, ServiceEventArgs e) {
            Tracing.TraceMsg("Created new Calendar Feed");
            if (e == null) {
                throw new ArgumentNullException("e");
            }

            if (e.Uri.AbsoluteUri.IndexOf("/acl/") != -1) {
                e.Feed = new AclFeed(e.Uri, e.Service);
            } else if ((e.Uri.AbsoluteUri.IndexOf("/allcalendars/") != -1) ||
                       (e.Uri.AbsoluteUri.IndexOf("/owncalendars/") != -1)) {
                e.Feed = new CalendarFeed(e.Uri, e.Service);
            } else {
                e.Feed = new EventFeed(e.Uri, e.Service);
            }
        }
示例#6
0
        //////////////////////////////////////////////////////////////////////
        /// <summary>eventchaining. We catch this by from the base service, which 
        /// would not by default create an atomFeed</summary> 
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
        /// <returns> </returns>
        //////////////////////////////////////////////////////////////////////
        protected void OnNewFeed(object sender, ServiceEventArgs e)
        {
            Tracing.TraceMsg("Created new Picasa Feed");
            if (e == null)
            {
                throw new ArgumentNullException("e"); 
            }

            // picasa feeds are based on the following templates:
            // userFeeds:       http://picasaweb.google.com/data/feed/projection/user/userID/?kind=kinds
            // albumFeeds(id):  http://picasaweb.google.com/data/feed/projection/user/userID/albumid/albumID?kind=kinds
            // albumFeed(name): http://picasaweb.google.com/data/feed/projection/user/userID/album/albumName?kind=kinds
            // PicasaFeed(id):   http://picasaweb.google.com/data/feed/projection/user/userID/albumid/albumID/photoid/photoID?kind=kinds
            // PicasaFeed(name): http://picasaweb.google.com/data/feed/projection/user/userID/album/albumName/photoid/photoID?kind=kinds
            // 
            // the easiest way, on the URI, is to just count the number of slashes
            // but we don't really need to do that, as kinds can be mixed in a feed, we just use one feedtype for picasaweb

            e.Feed = new PicasaFeed(e.Uri, e.Service);
        }
示例#7
0
        /// <summary>creates a new feed instance to be returned by
        /// Batch(), Query() and other operations
        ///
        /// Subclasses can supply their own feed implementation by
        /// overriding this method.
        /// </summary>
        protected virtual AtomFeed CreateFeed(Uri uriToUse)
        {
            ServiceEventArgs args = null;
            AtomFeed         feed = null;

            if (this.NewFeed != null)
            {
                args = new ServiceEventArgs(uriToUse, this);
                this.NewFeed(this, args);
            }

            if (args != null)
            {
                feed = args.Feed;
            }

            if (feed == null)
            {
                feed = new AtomFeed(uriToUse, this);
            }

            return(feed);
        }
示例#8
0
 /// <summary>
 /// Feed handler.  Instantiates a new <code>EmailListFeed</code>.
 /// </summary>
 /// <param name="sender">the object that's sending the evet</param>
 /// <param name="e"><code>ServiceEventArgs</code>, holds the feed</param>
 protected void OnParsedNewFeed(object sender, ServiceEventArgs e)
 {
     Tracing.TraceMsg("Created new email list feed");
     if (e == null)
     {
         throw new ArgumentNullException("e");
     }
     e.Feed = new EmailListFeed(e.Uri, e.Service);
 }
 //////////////////////////////////////////////////////////////////////
 /// <summary>eventchaining. We catch this by from the base service, which 
 /// would not by default create an atomFeed</summary> 
 /// <param name="sender"> the object which send the event</param>
 /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
 /// <returns> </returns>
 //////////////////////////////////////////////////////////////////////
 protected void OnNewFeed(object sender, ServiceEventArgs e)
 {
     Tracing.TraceMsg("Created new Documents Feed");
     if (e == null)
     {
         throw new ArgumentNullException("e"); 
     }
     if (e.Uri.AbsoluteUri.IndexOf("/acl") != -1)
     {
         e.Feed = new AclFeed(e.Uri, e.Service);
     }
     else
         e.Feed = new DocumentsFeed(e.Uri, e.Service);
 }
示例#10
0
 public void ServiceEventArgsConstructorTest()
 {
     Uri uri = new Uri("http://www.test.com/");
     IService service = new Service();
     ServiceEventArgs target = new ServiceEventArgs(uri, service); // TODO: Initialize to an appropriate value
     Assert.IsNotNull(target);
 }
        /// <summary>eventchaining. We catch this by from the base service, which 
        /// would not by default create an atomFeed</summary> 
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
        /// <returns> </returns>
        protected void OnNewFeed(object sender, ServiceEventArgs e) {
            Tracing.TraceMsg("Created new YouTube Feed");
            if (e == null) {
                throw new ArgumentNullException("e");
            }

            string path = e.Uri.AbsolutePath;

            if (Regex.IsMatch(@"/feeds/api/playlists/", path)) {
                // playlists base url https://gdata.youtube.com/feeds/api/playlists/
                e.Feed = new PlaylistFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/contacts")) {
                // contacts feeds are https://gdata.youtube.com/feeds/api/users/username/contacts
                e.Feed = new FriendsFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/playlists")) {
                // user based list of playlists are https://gdata.youtube.com/feeds/api/users/username/playlists
                e.Feed = new PlaylistsFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/subscriptions")) {
                // user based list of subscriptions are https://gdata.youtube.com/feeds/api/users/username/subscriptions
                e.Feed = new SubscriptionFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/inbox")) {
                // user based list of messages are https://gdata.youtube.com/feeds/api/users/username/inbox
                e.Feed = new MessageFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/comments")) {
                // user based list of comments are https://gdata.youtube.com/feeds/api/videos/videoid/comments
                e.Feed = new CommentsFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/shows")) {
                // user based list of shows are https://gdata.youtube.com/feeds/api/users/username/shows
                e.Feed = new ShowFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/charts/shows/(\w+)")) {
                // standard list of shows are https://gdata.youtube.com/feeds/api/charts/shows/feedname
                e.Feed = new ShowFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/shows/([\w-]+)/content")) {
                // show based list of seasons are https://gdata.youtube.com/feeds/api/shows/showname/content
                e.Feed = new ShowSeasonFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/uploads")) {
                // user based upload service url https://gdata.youtube.com/feeds/api/users/videoid/uploads
                e.Feed = new YouTubeFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/events")) {
                // event feeds https://gdata.youtube.com/feeds/api/events?author=usernames
                e.Feed = new ActivitiesFeed(e.Uri, e.Service);
            } else if (Regex.IsMatch(path, @"/feeds/api/users/(\w+)/friendsactivity")) {
                // event feeds https://gdata.youtube.com/feeds/api/users/default/friendsactivity
                e.Feed = new ActivitiesFeed(e.Uri, e.Service);
            } else if (IsProfileUri(path)) {
                // user based list of playlists are https://gdata.youtube.com/feeds/api/users/username/playlists
                e.Feed = new ProfileFeed(e.Uri, e.Service);
            } else {
                // everything not detected yet, is a youtubefeed.
                e.Feed = new YouTubeFeed(e.Uri, e.Service);
            }
        }
示例#12
0
        public void FeedTest()
        {
            Uri uri = new Uri("http://www.test.com/");
            IService service = new Service();
            ServiceEventArgs target = new ServiceEventArgs(uri, service); // TODO: Initialize to an appropriate value

            AtomFeed expected = new AtomFeed(uri, service);
            AtomFeed actual;
            target.Feed = expected;
            actual = target.Feed;
            Assert.AreEqual(expected, actual);
        }
示例#13
0
        //////////////////////////////////////////////////////////////////////
        /// <summary>creates a new feed instance to be returned by
        /// Batch(), Query() and other operations
        ///
        /// Subclasses can supply their own feed implementation by
        /// overriding this method.
        /// </summary>
        //////////////////////////////////////////////////////////////////////
        protected virtual AtomFeed createFeed(Uri uriToUse)
        {
            ServiceEventArgs args = null;
            AtomFeed feed = null;

            if (this.NewFeed != null)
            {
                args = new ServiceEventArgs(uriToUse, this);
                this.NewFeed(this, args);
            }

            if (args != null)
            {
                feed = args.Feed;
            }

            if (feed == null)
            {
                feed = new AtomFeed(uriToUse, this);
            }

            return feed;
        }
 /// <summary>eventchaining. We catch this by from the base service, which 
 /// would not by default create an atomFeed</summary> 
 /// <param name="sender">the object which send the event</param>
 /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
 /// <returns> </returns>
 protected void OnNewFeed(object sender, ServiceEventArgs e) {
     Tracing.TraceMsg("Created new Analytics Feed");
     if (e == null) {
         throw new ArgumentNullException("e");
     }
     // do not use string.contains, does not exist on CF framework
     if (e.Uri.AbsolutePath.IndexOf("/analytics/feeds/accounts/") != -1) {
         //https://www.google.com/analytics/feeds/accounts/default
         e.Feed = new AccountFeed(e.Uri, e.Service);
     } else {
         //https://www.google.com/analytics/feeds/data
         e.Feed = new DataFeed(e.Uri, e.Service);
     }
 }
示例#15
0
        /// <summary>
        /// Feed handler. Instantiates a new <code>GenericFeed</code>.
        /// </summary>
        /// <param name="sender">the object that's sending the event</param>
        /// <param name="e"><code>ServiceEventArgs</code>, holds the feed</param>
        protected void OnParsedNewFeed(object sender, ServiceEventArgs e) {
            if (e == null) {
                throw new ArgumentNullException("e");
            }

            e.Feed = getFeed(e.Uri, e.Service);
        }
        /// <summary>eventchaining. We catch this by from the base service, which
        /// would not by default create an atomFeed</summary>
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param>
        /// <returns> </returns>
        protected void OnNewFeed(object sender, ServiceEventArgs e) {
            Tracing.TraceMsg("Created new Content for Shopping Feed");
            if (e == null) {
                throw new ArgumentNullException("e");
            }

            string service = ParseService(e.Uri.AbsoluteUri);
            if (service == "items") {
                e.Feed = new ProductFeed(e.Uri, e.Service);
            } else if (service == "managedaccounts") {
                e.Feed = new ManagedAccountsFeed(e.Uri, e.Service);
            } else if (service == "datafeeds") {
                e.Feed = new DatafeedFeed(e.Uri, e.Service);
            } else if (service == "dataquality") {
                e.Feed = new DataQualityFeed(e.Uri, e.Service);
            } else if (service == "users") {
                e.Feed = new UsersFeed(e.Uri, e.Service);
            } else if (service == "inventory") {
                e.Feed = new InventoryFeed(e.Uri, e.Service);
            }
        }
        /// <summary>eventchaining. We catch this by from the base service, which 
        /// would not by default create an atomFeed</summary> 
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
        /// <returns> </returns>
        protected void OnNewFeed(object sender, ServiceEventArgs e) {
            Tracing.TraceMsg("Created new Documents Feed");
            if (e == null) {
                throw new ArgumentNullException("e");
            }

            string feedUri = e.Uri.AbsoluteUri;
            if (feedUri.IndexOf("/acl") != -1) {
                e.Feed = new AclFeed(e.Uri, e.Service);
            } else if (feedUri.IndexOf("/changes") > -1) {
                e.Feed = new ChangesFeed(e.Uri, e.Service);
            } else if (feedUri.IndexOf("/metadata/") > -1) {
                e.Feed = new MetadataFeed(e.Uri, e.Service);
            } else if (feedUri.IndexOf("/archive") > -1) {
                e.Feed = new ArchiveFeed(e.Uri, e.Service);
            } else if (feedUri.IndexOf("/revisions") > -1) {
                e.Feed = new RevisionFeed(e.Uri, e.Service);
            } else {
                e.Feed = new DocumentsFeed(e.Uri, e.Service);
            }
        }
 /// <summary>
 /// Overridden so that new feeds are returned as <code>GoogleMailSettingsFeed</code>s
 /// instead of base <code>AtomFeed</code>s.
 /// </summary>
 /// <param name="sender"> the object which sent the event</param>
 /// <param name="e">FeedParserEventArguments, holds the FeedEntry</param> 
 protected void OnNewFeed(object sender, ServiceEventArgs e)
 {
     Tracing.TraceMsg("Created new Google Mail Settings Item Feed");
     if (e == null)
     {
         throw new ArgumentNullException("e");
     }
     e.Feed = new GoogleMailSettingsFeed(e.Uri, e.Service);
 }
 //////////////////////////////////////////////////////////////////////
 /// <summary>eventchaining. We catch this by from the base service, which 
 /// would not by default create an atomFeed</summary> 
 /// <param name="sender"> the object which send the event</param>
 /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
 /// <returns> </returns>
 //////////////////////////////////////////////////////////////////////
 protected void OnNewFeed(object sender, ServiceEventArgs e)
 {
     Tracing.TraceMsg("Created new Spreadsheet Feed");
     if (e == null)
     {
         throw new ArgumentNullException("e"); 
     }
     if (e.Uri.AbsoluteUri.IndexOf("/" + 
           GDataSpreadsheetsNameTable.FeedCell + "/") != -1)
     {
         e.Feed = new CellFeed(e.Uri, e.Service);
     } 
     else if (e.Uri.AbsoluteUri.IndexOf("/" + 
           GDataSpreadsheetsNameTable.FeedList + "/") != -1)
     {
         e.Feed = new ListFeed(e.Uri, e.Service);
     }
     else if(e.Uri.AbsoluteUri.IndexOf("/" + 
           GDataSpreadsheetsNameTable.FeedSpreadsheet + "/") != -1)
     {
         e.Feed = new SpreadsheetFeed(e.Uri, e.Service);
     }
     else if(e.Uri.AbsoluteUri.IndexOf("/" + 
           GDataSpreadsheetsNameTable.FeedWorksheet + "/") != -1)
     {
         e.Feed = new WorksheetFeed(e.Uri, e.Service);
     }
 }
        //////////////////////////////////////////////////////////////////////
        /// <summary>eventchaining. We catch this by from the base service, which 
        /// would not by default create an atomFeed</summary> 
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
        /// <returns> </returns>
        //////////////////////////////////////////////////////////////////////
        protected void OnNewFeed(object sender, ServiceEventArgs e)
        {
            Tracing.TraceMsg("Created new YouTube Feed");
            if (e == null)
            {
                throw new ArgumentNullException("e"); 
            }

            if (e.Uri.AbsolutePath.IndexOf("feeds/api/playlists/") != -1)
            {
                // playlists base url: http://gdata.youtube.com/feeds/api/playlists/
                e.Feed = new PlaylistFeed(e.Uri, e.Service);
            } 
            else if(e.Uri.AbsolutePath.IndexOf("feeds/api") != -1 && 
                    e.Uri.AbsolutePath.IndexOf("contacts") != -1)
            {
                // contacts feeds are http://gdata.youtube.com/feeds/api/users/username/contacts
                e.Feed = new FriendsFeed(e.Uri, e.Service);
            }
            else if(e.Uri.AbsolutePath.IndexOf("feeds/api/users") != -1 && 
                    e.Uri.AbsolutePath.IndexOf("playlists") != -1)
            {
                // user based list of playlists are http://gdata.youtube.com/feeds/api/users/username/playlists
                e.Feed = new PlaylistsFeed(e.Uri, e.Service);
            }
            else if(e.Uri.AbsolutePath.IndexOf("feeds/api/users") != -1 && 
                    e.Uri.AbsolutePath.IndexOf("subscriptions") != -1)
            {
                // user based list of subscriptions are http://gdata.youtube.com/feeds/api/users/username/subscriptions
                e.Feed = new SubscriptionFeed(e.Uri, e.Service);
            }
            else if(e.Uri.AbsolutePath.IndexOf("feeds/api/users") != -1 && 
                    e.Uri.AbsolutePath.IndexOf("inbox") != -1)
            {
                // user based list of messages are http://gdata.youtube.com/feeds/api/users/username/inbox
                e.Feed = new MessageFeed(e.Uri, e.Service);
            }
            else if(e.Uri.AbsolutePath.IndexOf("feeds/api/videos") != -1 && 
                    e.Uri.AbsolutePath.IndexOf("comments") != -1)
            {
                // user based list of messages are http://gdata.youtube.com/feeds/api/videos/videoid/comments
                e.Feed = new CommentsFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsolutePath.IndexOf("feeds/api/users") != -1 &&
               e.Uri.AbsolutePath.IndexOf("uploads") != -1)
            {
                // user based upload service are http://gdata.youtube.com/feeds/api/users/videoid/uploads
                e.Feed = new YouTubeFeed(e.Uri, e.Service);
            }
            else if(e.Uri.AbsolutePath.IndexOf("feeds/api/events") != -1 && 
                e.Uri.PathAndQuery.IndexOf("author") != -1)
            {
                // event feeds  http://gdata.youtube.com/feeds/api/events?author=usernames
                e.Feed = new ActivitiesFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsolutePath.IndexOf("feeds/api/users") != -1 &&
                e.Uri.AbsolutePath.IndexOf("friendsactivity") != -1)
            {
                // event feeds  "http://gdata.youtube.com/feeds/api/users/default/friendsactivity";
                e.Feed = new ActivitiesFeed(e.Uri, e.Service);
            }
            else if (IsProfileUri(e.Uri))
            {
                // user based list of playlists are http://gdata.youtube.com/feeds/api/users/username/playlists
                e.Feed = new ProfileFeed(e.Uri, e.Service);
            }
            else 
            {
                // everything not detected yet, is a youtubefeed.
                e.Feed = new YouTubeFeed(e.Uri, e.Service);
            }
        }
示例#21
0
        //////////////////////////////////////////////////////////////////////
        /// <summary>eventchaining. We catch this by from the base service, which 
        /// would not by default create an atomFeed</summary> 
        /// <param name="sender"> the object which send the event</param>
        /// <param name="e">FeedParserEventArguments, holds the feedentry</param> 
        /// <returns> </returns>
        //////////////////////////////////////////////////////////////////////
        protected void OnNewFeed(object sender, ServiceEventArgs e)
        {
            Tracing.TraceMsg("Created new Webmaster Tools Feed");
            if (e == null)
            {
                throw new ArgumentNullException("e");
            }

            if (e.Uri.AbsolutePath.IndexOf("feeds") != -1 && e.Uri.AbsolutePath.IndexOf("keywords") != -1)
            {
                // keywords base url: https://www.google.com/webmasters/tools/feeds/siteID/keywords/
                e.Feed = new KeywordsFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsolutePath.IndexOf("feeds/messages/") != -1)
            {
                // messages feeds are https://www.google.com/webmasters/tools/feeds/messages/
                e.Feed = new MessagesFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsolutePath.IndexOf("feeds/sites/") != -1)
            {
                // messages feeds are https://www.google.com/webmasters/tools/feeds/sites/
                e.Feed = new SitesFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsolutePath.IndexOf("feeds") != -1 && e.Uri.AbsolutePath.IndexOf("crawlissues") != -1)
            {
                // crawl issues are https://www.google.com/webmasters/tools/feeds/siteID/crawlissues/
                e.Feed = new CrawlIssuesFeed(e.Uri, e.Service);
            }
            else if (e.Uri.AbsolutePath.IndexOf("feeds") != -1 &&
                    e.Uri.AbsolutePath.IndexOf("sitemaps") != -1)
            {
                // crawl issues are https://www.google.com/webmasters/tools/feeds/siteID/sitemaps/
                e.Feed = new SitemapsFeed(e.Uri, e.Service);
            }
            
        }