in firebase_admin/_messaging_encoder.py [0:0]
def encode_light_settings(cls, light_settings):
"""Encodes a ``LightSettings`` instance into JSON."""
if light_settings is None:
return None
if not isinstance(light_settings, _messaging_utils.LightSettings):
raise ValueError(
'AndroidNotification.light_settings must be an instance of LightSettings class.')
result = {
'color': _Validators.check_string(
'LightSettings.color', light_settings.color, non_empty=True),
'light_on_duration': cls.encode_milliseconds(
'LightSettings.light_on_duration_millis', light_settings.light_on_duration_millis),
'light_off_duration': cls.encode_milliseconds(
'LightSettings.light_off_duration_millis',
light_settings.light_off_duration_millis),
}
result = cls.remove_null_values(result)
light_on_duration = result.get('light_on_duration')
if not light_on_duration:
raise ValueError(
'LightSettings.light_on_duration_millis is required.')
light_off_duration = result.get('light_off_duration')
if not light_off_duration:
raise ValueError(
'LightSettings.light_off_duration_millis is required.')
color = result.get('color')
if not color:
raise ValueError('LightSettings.color is required.')
if not re.match(r'^#[0-9a-fA-F]{6}$', color) and not re.match(r'^#[0-9a-fA-F]{8}$', color):
raise ValueError(
'LightSettings.color must be in the form #RRGGBB or #RRGGBBAA.')
if len(color) == 7:
color = (color+'FF')
rgba = [int(color[i:i + 2], 16) / 255.0 for i in (1, 3, 5, 7)]
result['color'] = {'red': rgba[0], 'green': rgba[1],
'blue': rgba[2], 'alpha': rgba[3]}
return result