コード例 #1
0
        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);
            }
        }