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); } }
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); }
////////////////////////////////////////////////////////////////////// /// <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); }
/// <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); } }
/// <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); } }
////////////////////////////////////////////////////////////////////// /// <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); }
/// <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> /// 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); }
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); } }
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); }
////////////////////////////////////////////////////////////////////// /// <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); } }
/// <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); } }
////////////////////////////////////////////////////////////////////// /// <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); } }