ymyzk/kawasemi

View on GitHub
kawasemi/backends/base.py

Summary

Maintainability
A
0 mins
Test Coverage
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from abc import ABCMeta, abstractmethod
from typing import Optional, Text  # noqa: F401

from six import add_metaclass

from ..types import SendOptions  # noqa: F401


@add_metaclass(ABCMeta)
class BaseChannel(object):
    @abstractmethod
    def send(self, message, fail_silently=False, options=None):
        # type: (Text, bool, Optional[SendOptions]) -> None
        pass

    @staticmethod
    def _set_payload_from_options(payload, options, option_key, payload_keys):
        """Update payload dictionary with option

        :type payload: dict
        :type options: dict
        :type option_key: str | unicode
        :type payload_keys: list[str | unicode]
        """
        if options is None or option_key not in options:
            return

        options = options[option_key]
        for payload_key in payload_keys:
            if payload_key in options:
                payload[payload_key] = options[payload_key]