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);
        }
Example #2
0
        public List <NotificationEventType> GetAllEventTypes()
        {
            VssConnection          connection         = Context.Connection;
            NotificationHttpClient notificationClient = connection.GetClient <NotificationHttpClient>();

            List <NotificationEventType> eventTypes = notificationClient.ListEventTypesAsync().Result;

            LogEventTypes(eventTypes);

            return(eventTypes);
        }
Example #3
0
        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);
        }