/// <summary> /// Creates a new subscription. /// </summary> public async Task <Subscription> NewSubscriptionAsync(Subscription subscription) { try { string subscriptionFullName = GetSubscriptionFullName(subscription.Name); ProjectsResource.SubscriptionsResource.CreateRequest request = Service.Projects.Subscriptions.Create(subscription, subscriptionFullName); return(await request.ExecuteAsync()); } catch (GoogleApiException e) { throw new DataSourceException(e.Message, e); } }
protected override void ProcessRecord() { Topic = GetProjectPrefixForTopic(Topic, Project); Subscription = GetProjectPrefixForSubscription(Subscription, Project); Subscription subscriptionBody = new Subscription() { Name = Subscription, Topic = Topic }; if (AckDeadline.HasValue) { subscriptionBody.AckDeadlineSeconds = AckDeadline.Value; } if (PushEndpoint != null) { subscriptionBody.PushConfig = new PushConfig() { PushEndpoint = PushEndpoint }; } ProjectsResource.SubscriptionsResource.CreateRequest request = Service.Projects.Subscriptions.Create(subscriptionBody, Subscription); try { Subscription response = request.Execute(); WriteObject(response); } catch (GoogleApiException ex) when(ex.HttpStatusCode == HttpStatusCode.Conflict) { WriteResourceExistsError( exceptionMessage: $"Cannot create '{Subscription}' in project '{Project}' because it already exists.", errorId: "SubscriptionAlreadyExists", targetObject: Subscription); } catch (GoogleApiException ex) when(ex.HttpStatusCode == HttpStatusCode.NotFound) { WriteResourceMissingError( exceptionMessage: $"Topic '{Topic}' does not exist in project '{Project}'.", errorId: "TopicNotFound", targetObject: Topic); } }