Skip to content

Commit 808d61f

Browse files
feat(pubsub): create_subscription_with_filter (GoogleCloudPlatform#1604)
1 parent 4436e02 commit 808d61f

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
/**
3+
* Copyright 2022 Google Inc.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
/**
19+
* For instructions on how to run the full sample:
20+
*
21+
* @see https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/pubsub/api/README.md
22+
*/
23+
24+
namespace Google\Cloud\Samples\PubSub;
25+
26+
# [START pubsub_create_subscription_with_filter]
27+
use Google\Cloud\PubSub\PubSubClient;
28+
29+
/**
30+
* Creates a Pub/Sub subscription.
31+
*
32+
* @param string $projectId The Google project ID.
33+
* @param string $topicName The Pub/Sub topic name.
34+
* @param string $subscriptionName The Pub/Sub subscription name.
35+
* @param string $filter The Pub/Sub subscription filter.
36+
*/
37+
function create_subscription_with_filter($projectId, $topicName, $subscriptionName, $filter)
38+
{
39+
$pubsub = new PubSubClient([
40+
'projectId' => $projectId,
41+
]);
42+
$topic = $pubsub->topic($topicName);
43+
$subscription = $topic->subscription($subscriptionName);
44+
45+
$subscription->create(['filter' => $filter]);
46+
47+
printf('Subscription created: %s' . PHP_EOL, $subscription->name());
48+
printf('Subscription info: %s' . PHP_EOL, json_encode($subscription->info()));
49+
}
50+
# [END pubsub_create_subscription_with_filter]
51+
require_once __DIR__ . '/../../../testing/sample_helpers.php';
52+
\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv);

pubsub/api/test/pubsubTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,36 @@ public function testCreateAndDeleteSubscription()
195195
$this->assertRegExp(sprintf('/%s/', $subscription), $output);
196196
}
197197

198+
public function testCreateAndDeleteSubscriptionWithFilter()
199+
{
200+
$topic = $this->requireEnv('GOOGLE_PUBSUB_TOPIC');
201+
$subscription = 'test-subscription-' . rand();
202+
$filter = 'attributes.author="unknown"';
203+
$output = $this->runFunctionSnippet('create_subscription_with_filter', [
204+
self::$projectId,
205+
$topic,
206+
$subscription,
207+
$filter
208+
]);
209+
$this->assertStringContainsString(sprintf(
210+
'Subscription created: projects/%s/subscriptions/%s',
211+
self::$projectId,
212+
$subscription
213+
), $output);
214+
$this->assertStringContainsString('"filter":"attributes.author=\"unknown\""', $output);
215+
216+
$output = $this->runFunctionSnippet('delete_subscription', [
217+
self::$projectId,
218+
$subscription,
219+
]);
220+
221+
$this->assertStringContainsString(sprintf(
222+
'Subscription deleted: projects/%s/subscriptions/%s',
223+
self::$projectId,
224+
$subscription
225+
), $output);
226+
}
227+
198228
public function testCreateAndDeletePushSubscription()
199229
{
200230
$topic = $this->requireEnv('GOOGLE_PUBSUB_TOPIC');

0 commit comments

Comments
 (0)