Beispiel #1
0
def send_message(msg,
                 code_list,
                 channel="dingtalk",
                 message_type="text",
                 *args,
                 **kwargs):
    """钉钉群发消息机器人 client """
    if not isinstance(msg, str) and not isinstance(code_list, list):
        raise TypeError(
            "参数类型错误:msg type not string or code_list type not list")
    data = {
        "msg": msg,
        "group_code_list": code_list,
        "channel": channel,
        "message_type": message_type
    }
    sparrow_ding_talk_conf = get_settings_value("SPARROW_DING_TALK_CONF")
    try:
        res = rest_client.post(sparrow_ding_talk_conf["SERVICE_DING_TALK"],
                               sparrow_ding_talk_conf["PATH"],
                               data=data,
                               *args,
                               **kwargs)
        logging.info(
            "sparrow_cloud ding_talk send_message: msg:{}, group_code_list:{}".
            format(msg, code_list))
        return res
    except HTTPException as ex:
        logging.error(
            "sparrow_cloud ding_talk send_message error: {}".format(ex))
        raise HTTPException(ex)
Beispiel #2
0
def send_task(exchange, routing_key, message_code, *args, **kwargs):
    """
    发送实时任务
        参数:
            exchange/routing_key/message_code, 创建消息服务时返回的配置信息
            *args
            **kwargs
        settings配置:

        MESSAGE_SENDER_CONF = {
            "SERVICE_CONF": {
                "ENV_NAME": "DLJFLS_LSDK_LDKEND",
                "VALUE": "xxxxx-svc",
            },
            "API_PATH": "/api/sparrow_task/producer/send/",
        }

    """

    message_conf = get_settings_value("MESSAGE_SENDER_CONF")
    service_addr = consul_service(message_conf['SERVICE_CONF'])
    message_backend = "http://{}{}".format(service_addr,
                                           message_conf['API_PATH'])

    task_sender = TaskSender(message_backend)
    try:
        task_resutl = task_sender.send_task(exchange=exchange,
                                            routing_key=routing_key,
                                            message_code=message_code,
                                            *args,
                                            **kwargs)
        return task_resutl
    except Exception as ex:
        raise HTTPException(ex)
Beispiel #3
0
def remove_lock(key: str, *args, **kwargs):
    """
        # ConfigMap:
            SC_SPARROW_DISTRIBUTED_LOCK_SVC
            SC_SPARROW_DISTRIBUTED_LOCK_API
    """
    service_conf = get_settings_value("SERVICE_CONF")
    service_name = service_conf.get("NAME", None)
    service_secret = service_conf.get("SECRET", None)
    if not service_name or not service_secret:
        raise Exception(
            "NAME or SECRET is not configured in SERVICE_CONF settings")
    data = {
        "service_name": service_name,
        "secret": service_secret,
        "key": key,
    }
    try:
        res = rest_client.delete(sc_distributed_lock_svc,
                                 sc_distributed_lock_api,
                                 json=data,
                                 *args,
                                 **kwargs)
        logging.info(
            "sparrow_cloud distributed lock remove lock, data:{}".format(data))
        return res
    except HTTPException as ex:
        logging.error(
            "sparrow_cloud distributed lock remove lock error: {}".format(ex))
        raise HTTPException(ex)
Beispiel #4
0
def send_message(msg_data,
                 code_type,
                 content_type="text",
                 msg_sender=None,
                 *args,
                 **kwargs):
    """
        # ConfigMap:
            SC_LY_MESSAGE
            SC_LY_MESSAGE_API
    """
    if msg_sender is None:
        msg_sender = get_service_name()
    sc_ly_message = get_cm_value("SC_LY_MESSAGE")
    sc_ly_message_api = get_cm_value("SC_LY_MESSAGE_API")
    data = {
        "shop_id": kwargs.pop("shop_id", None),
        "msg_sender": msg_sender,
        "code_type": code_type,
        "user_id_list": kwargs.pop("user_id_list", []),
        # msg数据格式是动态变化,由发送者根据服务要求填充发送该类型数据的必要数据
        # "msg": {
        #     "content_type": content_type,
        #     "data": msg_data
        # }
    }
    # 把kwargs里面剩余的有关数据放入msg中,发送的数据由服务发送者决定,此处不做校验
    msg = {"content_type": content_type, "data": msg_data}
    if kwargs.get("nickname"):
        msg.update({"nickname": kwargs.pop("nickname")})
    if kwargs.get("title"):
        msg.update({"title": kwargs.pop("title")})
    data.update({"msg": msg})
    try:
        res = rest_client.post(sc_ly_message,
                               sc_ly_message_api,
                               json=data,
                               *args,
                               **kwargs)
        logging.info(
            "sparrow_cloud ly_message send_message, data:{}, code_type:{}".
            format(data, code_type))
        return res
    except HTTPException as ex:
        logging.error(
            "sparrow_cloud ly_message send_message error: {}".format(ex))
        raise HTTPException(ex)
Beispiel #5
0
def send_message(msg,
                 code_list,
                 channel="dingtalk",
                 message_type="text",
                 *args,
                 **kwargs):
    """
        群发消息机器人 client
        configmap:
            SC_MESSAGE_ROBOT
            SC_MESSAGE_ROBOT_API
    """
    if not isinstance(msg, str) and not isinstance(code_list, list):
        raise TypeError(
            "参数类型错误:msg type not string or code_list type not list")
    sc_message_robot = get_cm_value("SC_MESSAGE_ROBOT")
    sc_message_robot_api = get_cm_value("SC_MESSAGE_ROBOT_API")
    data = {
        "msg": msg,
        "group_code_list": code_list,
        "channel": channel,
        "message_type": message_type
    }
    try:
        res = rest_client.post(sc_message_robot,
                               sc_message_robot_api,
                               data=data,
                               *args,
                               **kwargs)
        logging.info(
            "sparrow_cloud ding_talk send_message: msg:{}, group_code_list:{}".
            format(msg, code_list))
        return res
    except HTTPException as ex:
        logging.error(
            "sparrow_cloud ding_talk send_message error: {}".format(ex))
        raise HTTPException(ex)
Beispiel #6
0
from django.test import RequestFactory
from sparrow_cloud.dingtalk.sender import send_message

# CONSUL_RETURN_DATA = (
#     "name",
#     [
#         {'ServiceAddress': '162.23.7.247', 'ServicePort': 8001}
#     ]
# )

MOCK_RESPONSE = {"data": {"code": 0, "message": "success"}}

RESPONSE_CONTENT = {"group_code_list": ["group_code_list 传递错误"]}

XX = HTTPException(
    code="http_exception",
    detail=RESPONSE_CONTENT,
)
XX.status_code = 400

MOCK_RESPONSE_400 = XX


def mocked_requests(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code, content):
            self.json_data = json_data
            self.status_code = status_code
            self.content = content

        def json(self):
            return self.json_data