-
Notifications
You must be signed in to change notification settings - Fork 3.8k
/
Copy pathmain.py
72 lines (61 loc) · 2.39 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Copyright 2023 Google Inc. All Rights Reserved.
#
# 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.
import base64
# [START import]
from firebase_functions import pubsub_fn
# [END import]
# [START helloWorld]
# [START trigger]
@pubsub_fn.on_message_published(topic="topic-name")
def hellopubsub(event: pubsub_fn.CloudEvent[pubsub_fn.MessagePublishedData]) -> None:
"""Log a message using data published to a Pub/Sub topic."""
# [END trigger]
# [START readBase64]
# Decode the PubSub message body.
message_body = base64.b64decode(event.data.message.data)
# [END readBase64]
# Print the message.
print(f"Hello, {message_body.decode('utf-8') if message_body else 'World'}")
# [END helloWorld]
@pubsub_fn.on_message_published(topic="another-topic-name")
def hellopubsubjson(event: pubsub_fn.CloudEvent[pubsub_fn.MessagePublishedData]) -> None:
"""Log a message using data published as JSON to a Pub/Sub topic."""
# [START readJson]
# Get the `name` attribute of the PubSub message JSON body.
try:
data = event.data.message.json
except ValueError:
print("PubSub message was not JSON")
return
if data is None:
return
if "name" not in data:
print("No 'name' key")
return
name = data["name"]
# [END readJson]
# Print the message in the logs.
print(f"Hello, {name}")
@pubsub_fn.on_message_published(topic="yet-another-topic-name")
def hellopubsubattributes(event: pubsub_fn.CloudEvent[pubsub_fn.MessagePublishedData]) -> None:
"""Log a message using data published to a Pub/Sub topic as an attribute."""
# [START readAttributes]
# Get the `name` attribute of the message.
if "name" not in event.data.message.attributes:
print("No 'name' attribute")
return
name = event.data.message.attributes["name"]
# [END readAttributes]
# Print the message in the logs.
print(f"Hello, {name}")