Example #1
0
        public EventSubscription CreateEventSubscription(
            string scope,
            string eventSubscriptionName,
            string endpoint,
            string endpointType,
            string subjectBeginsWith,
            string subjectEndsWith,
            bool isSubjectCaseSensitive,
            string[] includedEventTypes,
            string[] labels)
        {
            EventSubscription            eventSubscription    = new EventSubscription();
            EventSubscriptionDestination destination          = null;
            const string WebHookEventSubscriptionDestination  = "webhook";
            const string EventHubEventSubscriptionDestination = "eventhub";

            if (string.IsNullOrEmpty(endpointType) ||
                string.Equals(endpointType, WebHookEventSubscriptionDestination, StringComparison.OrdinalIgnoreCase))
            {
                destination = new WebHookEventSubscriptionDestination()
                {
                    EndpointUrl = endpoint
                };
            }
            else if (string.Equals(endpointType, EventHubEventSubscriptionDestination, StringComparison.OrdinalIgnoreCase))
            {
                destination = new EventHubEventSubscriptionDestination()
                {
                    ResourceId = endpoint
                };
            }
            else
            {
                throw new ArgumentNullException(nameof(endpointType), "EndpointType should be WebHook or EventHub");
            }

            if (includedEventTypes == null)
            {
                includedEventTypes    = new string[1];
                includedEventTypes[0] = "All";
            }

            var filter = new EventSubscriptionFilter()
            {
                SubjectBeginsWith      = subjectBeginsWith,
                SubjectEndsWith        = subjectEndsWith,
                IsSubjectCaseSensitive = isSubjectCaseSensitive,
                IncludedEventTypes     = new List <string>(includedEventTypes)
            };

            eventSubscription.Destination = destination;
            eventSubscription.Filter      = filter;

            if (labels != null)
            {
                eventSubscription.Labels = new List <string>(labels);
            }

            return(this.Client.EventSubscriptions.Create(scope, eventSubscriptionName, eventSubscription));
        }
Example #2
0
        public async Task <EventSubscription> SubscribeEvent(
            string credentialsAzureSubscriptionId,
            string credentialsTenantId,
            string credentialsClientId,
            string credentialsClientSecret,
            string scope,
            string eventSubscriptionName,
            string id,
            string name,
            string subscriptionType,
            string topic,
            string provisioningState,
            List <string> labels,
            string eventDeliverySchema,
            int maxDeliveryAttempts,
            int eventTimeToLiveInMinutes,
            double expirationTimeInHours,
            string endpointUrl,
            int?maxEventsPerBatch)
        {
            await Task.Delay(0);

            try
            {
                EventGridManagementClient managementClient = new EventGridManagementClient(credentials: new CustomLoginCredentials(credentialsTenantId, credentialsClientId, credentialsClientSecret));
                managementClient.SubscriptionId = credentialsAzureSubscriptionId;
                EventSubscriptionFilter filter = null;
                DateTime?   expirationTime     = DateTime.UtcNow.AddHours(expirationTimeInHours);
                RetryPolicy retryPolicy        = new RetryPolicy(maxDeliveryAttempts: maxDeliveryAttempts,
                                                                 eventTimeToLiveInMinutes: eventTimeToLiveInMinutes);
                DeadLetterDestination deadLetterDestination     = null;
                WebHookEventSubscriptionDestination destination = new WebHookEventSubscriptionDestination(endpointUrl: endpointUrl,
                                                                                                          maxEventsPerBatch: maxEventsPerBatch);
                EventSubscription eventSubscriptionInfo = new EventSubscription(
                    id: id,
                    name: name,
                    type: subscriptionType,
                    topic: topic,
                    provisioningState: provisioningState,
                    destination: destination,
                    filter: filter,
                    labels: labels,
                    expirationTimeUtc: expirationTime,
                    eventDeliverySchema: eventDeliverySchema,
                    retryPolicy: retryPolicy,
                    deadLetterDestination: deadLetterDestination);
                EventSubscription createdSubscription = await managementClient.EventSubscriptions.CreateOrUpdateAsync(
                    scope : scope,
                    eventSubscriptionName : eventSubscriptionName,
                    eventSubscriptionInfo : eventSubscriptionInfo);

                return(createdSubscription);
            }
            catch (Exception ex)
            {
                _logger?.LogError($"Unknown Exception. Type: {ex.GetType().ToString()} ; Message: {ex.Message} ; Details: {ex.ToString()}");
                return(null);
            }
        }
        public EventSubscription CreateEventSubscription(
            string scope,
            string eventSubscriptionName,
            string endpoint,
            string endpointType,
            string subjectBeginsWith,
            string subjectEndsWith,
            bool isSubjectCaseSensitive,
            string[] includedEventTypes,
            string[] labels,
            RetryPolicy retryPolicy,
            string deadLetterEndpoint)
        {
            EventSubscription            eventSubscription = new EventSubscription();
            EventSubscriptionDestination destination       = null;

            if (string.IsNullOrEmpty(endpointType) ||
                string.Equals(endpointType, EventGridConstants.Webhook, StringComparison.OrdinalIgnoreCase))
            {
                destination = new WebHookEventSubscriptionDestination()
                {
                    EndpointUrl = endpoint
                };
            }
            else if (string.Equals(endpointType, EventGridConstants.EventHub, StringComparison.OrdinalIgnoreCase))
            {
                destination = new EventHubEventSubscriptionDestination()
                {
                    ResourceId = endpoint
                };
            }
            else if (string.Equals(endpointType, EventGridConstants.StorageQueue, StringComparison.OrdinalIgnoreCase))
            {
                destination = this.GetStorageQueueEventSubscriptionDestinationFromEndpoint(endpoint);
            }
            else if (string.Equals(endpointType, EventGridConstants.HybridConnection, StringComparison.OrdinalIgnoreCase))
            {
                destination = new HybridConnectionEventSubscriptionDestination()
                {
                    ResourceId = endpoint
                };
            }
            else
            {
                throw new ArgumentNullException(nameof(endpointType), "Invalid EndpointType. Allowed values are WebHook, EventHub, StorageQueue or HybridConnection");
            }

            if (includedEventTypes == null)
            {
                includedEventTypes    = new string[1];
                includedEventTypes[0] = "All";
            }

            eventSubscription.Destination = destination;

            var filter = new EventSubscriptionFilter()
            {
                SubjectBeginsWith      = subjectBeginsWith,
                SubjectEndsWith        = subjectEndsWith,
                IsSubjectCaseSensitive = isSubjectCaseSensitive,
                IncludedEventTypes     = new List <string>(includedEventTypes)
            };

            eventSubscription.Filter = filter;

            if (labels != null)
            {
                eventSubscription.Labels = new List <string>(labels);
            }

            if (retryPolicy != null)
            {
                eventSubscription.RetryPolicy = retryPolicy;
            }

            if (!string.IsNullOrEmpty(deadLetterEndpoint))
            {
                eventSubscription.DeadLetterDestination = this.GetStorageBlobDeadLetterDestinationFromEndPoint(deadLetterEndpoint);
            }

            return(this.Client.EventSubscriptions.CreateOrUpdate(scope, eventSubscriptionName, eventSubscription));
        }