Skip to content

Commit

Permalink
samples: add sample for push subscription with no wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
feywind committed Dec 20, 2023
1 parent f3b4070 commit 9db65c7
Show file tree
Hide file tree
Showing 3 changed files with 173 additions and 0 deletions.
79 changes: 79 additions & 0 deletions samples/createPushSubscriptionNoWrapper.js
Original file line number Diff line number Diff line change
@@ -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 <topic-name-or-id> <subscription-name-or-id>

// [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));
19 changes: 19 additions & 0 deletions samples/system-test/subscriptions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
75 changes: 75 additions & 0 deletions samples/typescript/createPushSubscriptionNoWrapper.ts
Original file line number Diff line number Diff line change
@@ -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 <topic-name-or-id> <subscription-name-or-id>

// [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));

0 comments on commit 9db65c7

Please sign in to comment.