From 9db65c7cd8589edc96e90ca479a7e224ca70ec88 Mon Sep 17 00:00:00 2001 From: feywind <57276408+feywind@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:26:22 -0500 Subject: [PATCH] samples: add sample for push subscription with no wrapper --- samples/createPushSubscriptionNoWrapper.js | 79 +++++++++++++++++++ samples/system-test/subscriptions.test.ts | 19 +++++ .../createPushSubscriptionNoWrapper.ts | 75 ++++++++++++++++++ 3 files changed, 173 insertions(+) create mode 100644 samples/createPushSubscriptionNoWrapper.js create mode 100644 samples/typescript/createPushSubscriptionNoWrapper.ts diff --git a/samples/createPushSubscriptionNoWrapper.js b/samples/createPushSubscriptionNoWrapper.js new file mode 100644 index 000000000..6297ff659 --- /dev/null +++ b/samples/createPushSubscriptionNoWrapper.js @@ -0,0 +1,79 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This is a generated sample, using the typeless sample bot. Please +// look for the source TypeScript sample (.ts) for modifications. +'use strict'; + +/** + * This application demonstrates how to perform basic operations on + * subscriptions with the Google Cloud Pub/Sub API. + * + * For more information, see the README.md under /pubsub and the documentation + * at https://cloud.google.com/pubsub/docs. + */ + +// sample-metadata: +// title: Create Push Subscription With No Wrapper +// description: Creates a new push subscription, but disables metadata wrapping. +// usage: node createPushSubscriptionNoWrapper.js + +// [START pubsub_create_push_no_wrapper_subscription] +/** + * TODO(developer): Uncomment these variables before running the sample. + */ +// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID'; +// const subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID'; + +// Imports the Google Cloud client library +const {PubSub} = require('@google-cloud/pubsub'); + +// Creates a client; cache this for further use +const pubSubClient = new PubSub(); + +async function createPushSubscriptionNoWrapper( + topicNameOrId, + subscriptionNameOrId +) { + const options = { + pushConfig: { + // Set to an HTTPS endpoint of your choice. If necessary, register + // (authorize) the domain on which the server is hosted. + pushEndpoint: `https://${pubSubClient.projectId}.appspot.com/push`, + noWrapper: { + writeMetadata: true, + }, + }, + }; + + await pubSubClient + .topic(topicNameOrId) + .createSubscription(subscriptionNameOrId, options); + console.log(`Subscription ${subscriptionNameOrId} created.`); +} +// [END pubsub_create_push_no_wrapper_subscription] + +function main( + topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID', + subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID' +) { + createPushSubscriptionNoWrapper(topicNameOrId, subscriptionNameOrId).catch( + err => { + console.error(err.message); + process.exitCode = 1; + } + ); +} + +main(...process.argv.slice(2)); diff --git a/samples/system-test/subscriptions.test.ts b/samples/system-test/subscriptions.test.ts index 4ce7c12df..8d39405f7 100644 --- a/samples/system-test/subscriptions.test.ts +++ b/samples/system-test/subscriptions.test.ts @@ -186,6 +186,25 @@ describe('subscriptions', () => { assert(subscriptions.some(s => s.name === fullSubName(subName))); }); + it('should create a push subscription w/no wrapper', async () => { + const testId = 'push_sub_nw'; + const topic = await createTopic(testId); + const subName = reserveSub(testId); + const output = execSync( + `${commandFor('createPushSubscriptionNoWrapper')} ${ + topic.name + } ${subName}` + ); + assert.include(output, `Subscription ${subName} created.`); + const sub = await pubsub.subscription(subName); + const [subInfo] = await sub.get(); + assert(subInfo.name === fullSubName(subName)); + const [meta] = await subInfo.getMetadata(); + assert(meta.pushConfig!.noWrapper!.writeMetadata === true); + /*const [subscriptions] = await pubsub.topic(topic.name).getSubscriptions(); + assert(subscriptions.some(s => s.name === fullSubName(subName)));*/ + }); + it('should create a BigQuery subscription', async () => { const testId = 'bigquery_sub'; const topic = await createTopic(testId); diff --git a/samples/typescript/createPushSubscriptionNoWrapper.ts b/samples/typescript/createPushSubscriptionNoWrapper.ts new file mode 100644 index 000000000..3a3644003 --- /dev/null +++ b/samples/typescript/createPushSubscriptionNoWrapper.ts @@ -0,0 +1,75 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * This application demonstrates how to perform basic operations on + * subscriptions with the Google Cloud Pub/Sub API. + * + * For more information, see the README.md under /pubsub and the documentation + * at https://cloud.google.com/pubsub/docs. + */ + +// sample-metadata: +// title: Create Push Subscription With No Wrapper +// description: Creates a new push subscription, but disables metadata wrapping. +// usage: node createPushSubscriptionNoWrapper.js + +// [START pubsub_create_push_no_wrapper_subscription] +/** + * TODO(developer): Uncomment these variables before running the sample. + */ +// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID'; +// const subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID'; + +// Imports the Google Cloud client library +import {PubSub, CreateSubscriptionOptions} from '@google-cloud/pubsub'; + +// Creates a client; cache this for further use +const pubSubClient = new PubSub(); + +async function createPushSubscriptionNoWrapper( + topicNameOrId: string, + subscriptionNameOrId: string +) { + const options: CreateSubscriptionOptions = { + pushConfig: { + // Set to an HTTPS endpoint of your choice. If necessary, register + // (authorize) the domain on which the server is hosted. + pushEndpoint: `https://${pubSubClient.projectId}.appspot.com/push`, + noWrapper: { + writeMetadata: true, + }, + }, + }; + + await pubSubClient + .topic(topicNameOrId) + .createSubscription(subscriptionNameOrId, options); + console.log(`Subscription ${subscriptionNameOrId} created.`); +} +// [END pubsub_create_push_no_wrapper_subscription] + +function main( + topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID', + subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID' +) { + createPushSubscriptionNoWrapper(topicNameOrId, subscriptionNameOrId).catch( + err => { + console.error(err.message); + process.exitCode = 1; + } + ); +} + +main(...process.argv.slice(2));