def encode_light_settings()

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