mirror of
https://github.com/chatmail/core.git
synced 2026-04-05 23:22:11 +03:00
A lot of work from @Hocuri and @Simon-Laux mostly. This exposes the API of the deltachat-provider-overview crate on the deltachat FFI API, allowing clients to use it to help users set up their accounts.
125 lines
3.4 KiB
Python
125 lines
3.4 KiB
Python
import sys
|
|
import re
|
|
import os
|
|
from os.path import dirname, abspath
|
|
from os.path import join as joinpath
|
|
|
|
# the following const are generated from deltachat.h
|
|
# this works well when you in a git-checkout
|
|
# run "python deltachat/const.py" to regenerate events
|
|
# begin const generated
|
|
DC_PROVIDER_STATUS_OK = 1
|
|
DC_PROVIDER_STATUS_PREPARATION = 2
|
|
DC_PROVIDER_STATUS_BROKEN = 3
|
|
DC_GCL_ARCHIVED_ONLY = 0x01
|
|
DC_GCL_NO_SPECIALS = 0x02
|
|
DC_GCL_ADD_ALLDONE_HINT = 0x04
|
|
DC_GCL_VERIFIED_ONLY = 0x01
|
|
DC_GCL_ADD_SELF = 0x02
|
|
DC_QR_ASK_VERIFYCONTACT = 200
|
|
DC_QR_ASK_VERIFYGROUP = 202
|
|
DC_QR_FPR_OK = 210
|
|
DC_QR_FPR_MISMATCH = 220
|
|
DC_QR_FPR_WITHOUT_ADDR = 230
|
|
DC_QR_ADDR = 320
|
|
DC_QR_TEXT = 330
|
|
DC_QR_URL = 332
|
|
DC_QR_ERROR = 400
|
|
DC_CHAT_ID_DEADDROP = 1
|
|
DC_CHAT_ID_TRASH = 3
|
|
DC_CHAT_ID_MSGS_IN_CREATION = 4
|
|
DC_CHAT_ID_STARRED = 5
|
|
DC_CHAT_ID_ARCHIVED_LINK = 6
|
|
DC_CHAT_ID_ALLDONE_HINT = 7
|
|
DC_CHAT_ID_LAST_SPECIAL = 9
|
|
DC_CHAT_TYPE_UNDEFINED = 0
|
|
DC_CHAT_TYPE_SINGLE = 100
|
|
DC_CHAT_TYPE_GROUP = 120
|
|
DC_CHAT_TYPE_VERIFIED_GROUP = 130
|
|
DC_MSG_ID_MARKER1 = 1
|
|
DC_MSG_ID_DAYMARKER = 9
|
|
DC_MSG_ID_LAST_SPECIAL = 9
|
|
DC_STATE_UNDEFINED = 0
|
|
DC_STATE_IN_FRESH = 10
|
|
DC_STATE_IN_NOTICED = 13
|
|
DC_STATE_IN_SEEN = 16
|
|
DC_STATE_OUT_PREPARING = 18
|
|
DC_STATE_OUT_DRAFT = 19
|
|
DC_STATE_OUT_PENDING = 20
|
|
DC_STATE_OUT_FAILED = 24
|
|
DC_STATE_OUT_DELIVERED = 26
|
|
DC_STATE_OUT_MDN_RCVD = 28
|
|
DC_CONTACT_ID_SELF = 1
|
|
DC_CONTACT_ID_DEVICE = 2
|
|
DC_CONTACT_ID_LAST_SPECIAL = 9
|
|
DC_MSG_TEXT = 10
|
|
DC_MSG_IMAGE = 20
|
|
DC_MSG_GIF = 21
|
|
DC_MSG_AUDIO = 40
|
|
DC_MSG_VOICE = 41
|
|
DC_MSG_VIDEO = 50
|
|
DC_MSG_FILE = 60
|
|
DC_EVENT_INFO = 100
|
|
DC_EVENT_SMTP_CONNECTED = 101
|
|
DC_EVENT_IMAP_CONNECTED = 102
|
|
DC_EVENT_SMTP_MESSAGE_SENT = 103
|
|
DC_EVENT_WARNING = 300
|
|
DC_EVENT_ERROR = 400
|
|
DC_EVENT_ERROR_NETWORK = 401
|
|
DC_EVENT_ERROR_SELF_NOT_IN_GROUP = 410
|
|
DC_EVENT_MSGS_CHANGED = 2000
|
|
DC_EVENT_INCOMING_MSG = 2005
|
|
DC_EVENT_MSG_DELIVERED = 2010
|
|
DC_EVENT_MSG_FAILED = 2012
|
|
DC_EVENT_MSG_READ = 2015
|
|
DC_EVENT_CHAT_MODIFIED = 2020
|
|
DC_EVENT_CONTACTS_CHANGED = 2030
|
|
DC_EVENT_LOCATION_CHANGED = 2035
|
|
DC_EVENT_CONFIGURE_PROGRESS = 2041
|
|
DC_EVENT_IMEX_PROGRESS = 2051
|
|
DC_EVENT_IMEX_FILE_WRITTEN = 2052
|
|
DC_EVENT_SECUREJOIN_INVITER_PROGRESS = 2060
|
|
DC_EVENT_SECUREJOIN_JOINER_PROGRESS = 2061
|
|
DC_EVENT_GET_STRING = 2091
|
|
DC_EVENT_FILE_COPIED = 2055
|
|
DC_EVENT_IS_OFFLINE = 2081
|
|
# end const generated
|
|
|
|
|
|
def read_event_defines(f):
|
|
rex = re.compile(r'#define\s+((?:DC_EVENT_|DC_QR|DC_MSG|DC_STATE_|'
|
|
r'DC_CONTACT_ID_|DC_GCL|DC_CHAT|DC_PROVIDER)\S+)\s+([x\d]+).*')
|
|
for line in f:
|
|
m = rex.match(line)
|
|
if m:
|
|
yield m.groups()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
here = abspath(__file__).rstrip("oc")
|
|
here_dir = dirname(here)
|
|
if len(sys.argv) >= 2:
|
|
deltah = sys.argv[1]
|
|
else:
|
|
deltah = joinpath(dirname(dirname(dirname(here_dir))), "deltachat-ffi", "deltachat.h")
|
|
assert os.path.exists(deltah)
|
|
|
|
lines = []
|
|
skip_to_end = False
|
|
for orig_line in open(here):
|
|
if skip_to_end:
|
|
if not orig_line.startswith("# end const"):
|
|
continue
|
|
skip_to_end = False
|
|
lines.append(orig_line)
|
|
if orig_line.startswith("# begin const"):
|
|
with open(deltah) as f:
|
|
for name, item in read_event_defines(f):
|
|
lines.append("{} = {}\n".format(name, item))
|
|
skip_to_end = True
|
|
|
|
tmpname = here + ".tmp"
|
|
with open(tmpname, "w") as f:
|
|
f.write("".join(lines))
|
|
os.rename(tmpname, here)
|