public NotificationSubscription CreateSubscriptionForTeam() { NotificationSubscription newSubscription; WebApiTeamRef team = ClientSampleHelpers.FindAnyTeam(this.Context, null); NotificationHttpClient notificationClient = Context.Connection.GetClient <NotificationHttpClient>(); // Query the available event types and find the first that can be used in a custom subscription List <NotificationEventType> eventTypes = notificationClient.ListEventTypesAsync().Result; NotificationEventType eventType = eventTypes.Find(e => { return(e.CustomSubscriptionsAllowed); }); NotificationSubscriptionCreateParameters createParams = new NotificationSubscriptionCreateParameters() { Description = "A subscription for our team", Filter = new ExpressionFilter(eventType.Id), Channel = new UserSubscriptionChannel(), Subscriber = new IdentityRef() { Id = team.Id.ToString() } }; newSubscription = notificationClient.CreateSubscriptionAsync(createParams).Result; LogSubscription(newSubscription); return(newSubscription); }
public List <NotificationEventType> GetAllEventTypes() { VssConnection connection = Context.Connection; NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>(); List <NotificationEventType> eventTypes = notificationClient.ListEventTypesAsync().Result; LogEventTypes(eventTypes); return(eventTypes); }
public List <NotificationEventType> GetEventTypesAvailableForCustomSubscriptions() { VssConnection connection = Context.Connection; NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>(); List <NotificationEventType> eventTypes = notificationClient.ListEventTypesAsync().Result; // Find only the event types that support being used in a custom subscriptions List <NotificationEventType> filteredEventTypes = eventTypes.FindAll(e => { return(e.CustomSubscriptionsAllowed); }); LogEventTypes(filteredEventTypes); return(filteredEventTypes); }
public NotificationSubscription CreateSubscriptionForUser() { NotificationHttpClient notificationClient = Context.Connection.GetClient <NotificationHttpClient>(); // Query the available event types and find the first that can be used in a custom subscription List <NotificationEventType> eventTypes = notificationClient.ListEventTypesAsync().Result; NotificationEventType eventType = eventTypes.Find(e => { return(e.CustomSubscriptionsAllowed); }); NotificationSubscriptionCreateParameters createParams = new NotificationSubscriptionCreateParameters() { Description = "My first subscription!", Filter = new ExpressionFilter(eventType.Id), Channel = new UserSubscriptionChannel() }; NotificationSubscription newSubscription = notificationClient.CreateSubscriptionAsync(createParams).Result; LogSubscription(newSubscription); return(newSubscription); }
public IEnumerable <IGrouping <string, NotificationSubscription> > GetSubscriptionsGroupedByEventType() { VssConnection connection = Context.Connection; NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>(); // Get existing subscriptions IEnumerable <NotificationSubscription> subscriptions = notificationClient.ListSubscriptionsAsync().Result; // Group subscriptions by event type var groupedSubscriptions = subscriptions.GroupBy <NotificationSubscription, String>(subscription => { return(String.IsNullOrEmpty(subscription.Filter.EventType) ? subscription.Filter.EventType : ""); }); // Create map of avaialble event types Dictionary <string, NotificationEventType> eventTypes = notificationClient.ListEventTypesAsync().Result.ToDictionary( eventType => { return(eventType.Id); }); // Show the subscriptions grouped by event type Context.Log("Custom subscriptions by event type"); foreach (IGrouping <string, NotificationSubscription> group in groupedSubscriptions) { NotificationEventType eventType; if (eventTypes.TryGetValue(group.Key, out eventType)) { Context.Log("Event type {0}:", eventType.Name); foreach (NotificationSubscription subscription in group) { Context.Log(" {0}, last modified: {1} by {2}", subscription.Description, subscription.ModifiedDate, subscription.LastModifiedBy?.DisplayName); } } } return(groupedSubscriptions); }