diff options
author | Trumeet <yuuta@yuuta.moe> | 2021-10-12 14:12:27 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2021-10-12 14:12:27 -0700 |
commit | 612fa53409ae24bf4b17e87a0c52e63658b59014 (patch) | |
tree | f05554fb57ea2162333d8918b0a3498550707fb7 | |
parent | 5eb340686e89c77411dc9c2b301db02b69739676 (diff) | |
download | easy-tg-612fa53409ae24bf4b17e87a0c52e63658b59014.tar easy-tg-612fa53409ae24bf4b17e87a0c52e63658b59014.tar.gz easy-tg-612fa53409ae24bf4b17e87a0c52e63658b59014.tar.bz2 easy-tg-612fa53409ae24bf4b17e87a0c52e63658b59014.zip |
handle updateConnectionState
-rw-r--r-- | easy-tg.c | 29 | ||||
-rw-r--r-- | easy-tg.h | 7 | ||||
-rw-r--r-- | example.c | 3 |
3 files changed, 39 insertions, 0 deletions
@@ -237,6 +237,33 @@ int tg_destroy() return 0; } +static int handle_update_connection_state(const json_object *json) +{ + int r = TG_IGNORE; + json_object *obj = NULL; + if(!json_object_object_get_ex(json, "state", &obj) || + !json_object_object_get_ex(obj, "@type", &obj)) + goto cleanup; + r = TG_CONNECTION; + tg_reg1 = json_object_get_string(obj); + if(!strcmp(tg_reg1, "connectionStateConnecting")) + tg_errno = TG_CONNECTION_CONNECTING; + else if(!strcmp(tg_reg1, "connectionStateConnectingToProxy")) + tg_errno = TG_CONNECTION_CONNECTING_PROXY; + else if(!strcmp(tg_reg1, "connectionStateReady")) + tg_errno = TG_CONNECTION_READY; + else if(!strcmp(tg_reg1, "connectionStateUpdating")) + tg_errno = TG_CONNECTION_UPDATING; + else if(!strcmp(tg_reg1, "connectionStateWaitingForNetwork")) + tg_errno = TG_CONNECTION_WAITING_NETWORK; + else + r = TG_RUN; + + goto cleanup; +cleanup: + return r; +} + int tg_loop() { if(tg_update != NULL) @@ -267,6 +294,8 @@ int tg_loop() r = handle_update_authorization_state(tg_update); else if(!strcmp(tg_update_type, "error")) r = handle_update_error(tg_update); + else if(!strcmp(tg_update_type, "updateConnectionState")) + r = handle_update_connection_state(tg_update); else r = TG_RUN; goto cleanup; @@ -16,12 +16,19 @@ #define TG_PARAMS 11 /* Need to provide TDLib parameters. */ #define TG_ERROR 12 /* TDLib returns an error. td_errno = code, r1 = extra, r2 = msg. */ #define TG_SYSERR 13 /* EasyTD encounters an error. */ +#define TG_CONNECTION 14 /* Telegram connection state update. tg_errno = code, r1 = raw type */ #define TG_REQ_SET_PARAMS "set_params" #define TG_REQ_LOGIN_PHONE "login_phone" #define TG_REQ_LOGIN_CODE "login_code" #define TG_REQ_LOGIN_PASS "login_pass" +#define TG_CONNECTION_CONNECTING 1 +#define TG_CONNECTION_CONNECTING_PROXY 2 +#define TG_CONNECTION_READY 3 +#define TG_CONNECTION_UPDATING 4 +#define TG_CONNECTION_WAITING_NETWORK 5 + #include <json-c/json_object.h> #include <stdint.h> #include <stdbool.h> @@ -174,6 +174,9 @@ int main(int argc, char **argv) /* Error code is stored in tg_errno. */ printf("Fetal: %d\n", tg_errno); break; + case TG_CONNECTION: /* Telegram connection status is changed. */ + printf("[CONNECTION]: %s (%d)\n", tg_reg1, tg_errno); + break; default: printf("???\n"); break; |