in firebase_admin/_messaging_encoder.py [0:0]
def encode_webpush_notification(cls, notification):
"""Encodes a ``WebpushNotification`` instance into JSON."""
if notification is None:
return None
if not isinstance(notification, _messaging_utils.WebpushNotification):
raise ValueError('WebpushConfig.notification must be an instance of '
'WebpushNotification class.')
result = {
'actions': cls.encode_webpush_notification_actions(notification.actions),
'badge': _Validators.check_string(
'WebpushNotification.badge', notification.badge),
'body': _Validators.check_string(
'WebpushNotification.body', notification.body),
'data': notification.data,
'dir': _Validators.check_string(
'WebpushNotification.direction', notification.direction),
'icon': _Validators.check_string(
'WebpushNotification.icon', notification.icon),
'image': _Validators.check_string(
'WebpushNotification.image', notification.image),
'lang': _Validators.check_string(
'WebpushNotification.language', notification.language),
'renotify': notification.renotify,
'requireInteraction': notification.require_interaction,
'silent': notification.silent,
'tag': _Validators.check_string(
'WebpushNotification.tag', notification.tag),
'timestamp': _Validators.check_number(
'WebpushNotification.timestamp_millis', notification.timestamp_millis),
'title': _Validators.check_string(
'WebpushNotification.title', notification.title),
'vibrate': notification.vibrate,
}
direction = result.get('dir')
if direction and direction not in ('auto', 'ltr', 'rtl'):
raise ValueError('WebpushNotification.direction must be "auto", "ltr" or "rtl".')
if notification.custom_data is not None:
if not isinstance(notification.custom_data, dict):
raise ValueError('WebpushNotification.custom_data must be a dict.')
for key, value in notification.custom_data.items():
if key in result:
raise ValueError(
'Multiple specifications for {0} in WebpushNotification.'.format(key))
result[key] = value
return cls.remove_null_values(result)