示例#1
0
def test_provider_info():
    provider = lib.dc_provider_new_from_email(cutil.as_dc_charpointer("*****@*****.**"))
    assert cutil.from_dc_charpointer(
        lib.dc_provider_get_overview_page(provider)
    ) == "https://providers.delta.chat/example.com"
    assert cutil.from_dc_charpointer(lib.dc_provider_get_name(provider)) == "Example"
    assert cutil.from_dc_charpointer(lib.dc_provider_get_markdown(provider)) == "\n..."
    assert cutil.from_dc_charpointer(lib.dc_provider_get_status_date(provider)) == "2018-09"
    assert lib.dc_provider_get_status(provider) == const.DC_PROVIDER_STATUS_PREPARATION
def test_get_info_closed():
    ctx = ffi.gc(
        lib.dc_context_new(lib.py_dc_callback, ffi.NULL, ffi.NULL),
        lib.dc_context_unref,
    )
    info = cutil.from_dc_charpointer(lib.dc_get_info(ctx))
    assert 'deltachat_core_version' in info
    assert 'database_dir' not in info
示例#3
0
def test_get_info_open(tmpdir):
    db_fname = tmpdir.join("test.db")
    ctx = ffi.gc(
        lib.dc_context_new(ffi.NULL, db_fname.strpath.encode("ascii"), ffi.NULL),
        lib.dc_context_unref,
    )
    info = cutil.from_dc_charpointer(lib.dc_get_info(ctx))
    assert 'deltachat_core_version' in info
    assert 'database_dir' in info
示例#4
0
 def perform(self) -> None:
     logger = self.bot.logger
     logger.debug("CheckAll perform-loop start")
     for msg_id in self.db.get_msgs():
         try:
             message = self.bot.account.get_message_by_id(msg_id)
             sender = message.get_sender_contact()
             if sender != self.bot.self_contact:
                 message.mark_seen()
                 encrinfo = from_dc_charpointer(
                     lib.dc_get_contact_encrinfo(
                         self.bot.account._dc_context,
                         sender.id,
                     )
                 )
                 can_encrypt = encrinfo.splitlines()[0].lower() != "no encryption."
             else:
                 can_encrypt = True
             if message.is_encrypted() or can_encrypt:
                 replies = Replies(message, logger=logger)
                 logger.info("processing incoming fresh message id=%s", message.id)
                 if message.is_system_message():
                     self.handle_system_message(message, replies)
                 elif not message.get_sender_contact().is_blocked():
                     if message.is_bot():
                         self.bot.plugins.hook.deltabot_incoming_bot_message(
                             message=message, bot=self.bot, replies=replies
                         )
                     else:
                         self.bot.plugins.hook.deltabot_incoming_message(
                             message=message, bot=self.bot, replies=replies
                         )
                 replies.send_reply_messages()
             else:
                 logger.info(
                     "ignoring message (id=%s) without autocrypt support", msg_id
                 )
             logger.info("processing message id=%s FINISHED", msg_id)
         except Exception as ex:
             logger.exception("processing message=%s failed: %s", msg_id, ex)
         self.db.pop_msg(msg_id)
     logger.debug("CheckAll perform-loop finish")
示例#5
0
def _send_diffusion(bot: DeltaBot, message: Message, chats: list) -> None:
    log = "diffusion: id={} chat={} sent with text: {!r}"
    text = message.text
    if lib.dc_msg_has_html(message._dc_msg):
        html = from_dc_charpointer(
            lib.dc_get_msg_html(bot.account._dc_context, message.id))
    else:
        html = None
    filename = message.filename
    quote = message.quote
    sender = _get_name(message.get_sender_contact())
    replies = Replies(message, logger=bot.logger)
    for chat in chats:
        replies.add(text=text,
                    html=html,
                    sender=sender,
                    quote=quote,
                    filename=filename,
                    viewtype=message._view_type,
                    chat=chat)
    try:
        replies.send_reply_messages()
    except ValueError as err:
        bot.logger.exception(err)