unleashed-firmware/scripts/send_firebase_notification.py

45 lines
1.3 KiB
Python
Raw Normal View History

import argparse
import logging
from firebase_admin import messaging, credentials, initialize_app
class FirebaseNotifications:
def __init__(self, service_account_file):
try:
cred = credentials.Certificate(service_account_file)
self.firebase_app = initialize_app(cred)
except Exception as e:
logging.exception(e)
raise e
def send(self, title, body, condition):
try:
message = messaging.Message(
notification=messaging.Notification(title=title, body=body),
condition=condition,
)
messaging.send(message, app=self.firebase_app)
except Exception as e:
logging.exception(e)
raise e
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--token_file", help="Firebase token file", required=True)
parser.add_argument(
"--version", help="Firmware version to notify with", required=True
)
args = parser.parse_args()
return args
if __name__ == "__main__":
args = parse_args()
notification = FirebaseNotifications(args.token_file)
notification.send(
title="Firmware Update Available",
body=f"New firmware version is ready to install: {args.version}",
condition="'flipper_update_firmware_release' in topics",
)