示例#1
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 PSEventSubscription(EventSubscription eventSubscription)
 {
     this.Id = eventSubscription.Id;
     this.EventSubscriptionName = eventSubscription.Name;
     this.Type = eventSubscription.Type;
     this.ProvisioningState     = eventSubscription.ProvisioningState;
     this.Destination           = eventSubscription.Destination;
     this.Filter                = eventSubscription.Filter;
     this.Labels                = eventSubscription.Labels;
     this.Topic                 = eventSubscription.Topic;
     this.EventTtl              = eventSubscription.RetryPolicy?.EventTimeToLiveInMinutes;
     this.MaxDeliveryAttempt    = eventSubscription.RetryPolicy?.MaxDeliveryAttempts;
     this.deadletterDestination = eventSubscription.DeadLetterDestination;
 }