瀏覽代碼

Fix some bugs

Tulir Asokan 4 年之前
父節點
當前提交
e42b8991ef
共有 4 個文件被更改,包括 21 次插入20 次删除
  1. 2 7
      mauigpapi/mqtt/conn.py
  2. 9 3
      mauigpapi/types/account.py
  3. 1 1
      mauigpapi/types/mqtt.py
  4. 9 9
      mautrix_instagram/web/provisioning_api.py

+ 2 - 7
mauigpapi/mqtt/conn.py

@@ -115,7 +115,7 @@ class AndroidMQTT:
         self._client.on_message = self._on_message_handler
         self._client.on_publish = self._on_publish_handler
         self._client.on_connect = self._on_connect_handler
-        self._client.on_disconnect = self._on_disconnect_handler
+        # self._client.on_disconnect = self._on_disconnect_handler
         self._client.on_socket_open = self._on_socket_open
         self._client.on_socket_close = self._on_socket_close
         self._client.on_socket_register_write = self._on_socket_register_write
@@ -179,12 +179,8 @@ class AndroidMQTT:
     def _on_socket_unregister_write(self, client: MQTToTClient, _: Any, sock: socket) -> None:
         self._loop.remove_writer(sock)
 
-    def _on_disconnect_handler(self, client: MQTToTClient, _: Any, rc: int) -> None:
-        print(f"_on_disconnect_handler({rc})")
-
     def _on_connect_handler(self, client: MQTToTClient, _: Any, flags: Dict[str, Any], rc: int
                             ) -> None:
-        print(f"_on_connect_handler({flags}, {rc})")
         if rc != 0:
             err = paho.mqtt.client.connack_string(rc)
             self.log.error("MQTT Connection Error: %s (%d)", err, rc)
@@ -296,7 +292,7 @@ class AndroidMQTT:
                          GraphQLQueryID.CLIENT_CONFIG_UPDATE, GraphQLQueryID.LIVE_REALTIME_COMMENTS):
             self.log.debug(f"Got unknown realtime sub event {topic}: {parsed_thrift.payload}")
         parsed_json = json.loads(parsed_thrift.payload)
-        event = parsed_json["event"]
+        event = parsed_json.get("event", "<no event type>")
         for item in parsed_json["data"]:
             evt = self._parse_realtime_sub_item(topic, item)
             self.log.trace(f"Got realtime sub event with topic {topic}/{event}: {evt}")
@@ -330,7 +326,6 @@ class AndroidMQTT:
 
     async def _reconnect(self) -> None:
         try:
-            print("Reconnecting")
             self._client.reconnect()
         except (SocketError, OSError, WebsocketConnectionError) as e:
             # TODO custom class

+ 9 - 3
mauigpapi/types/account.py

@@ -17,7 +17,7 @@ from typing import Any, List, Optional, Dict
 
 from attr import dataclass
 
-from mautrix.types import SerializableAttrs
+from mautrix.types import SerializableAttrs, SerializableEnum
 
 
 @dataclass(kw_only=True)
@@ -71,7 +71,6 @@ class BaseFullResponseUser(BaseResponseUser, SerializableAttrs['BaseFullResponse
     is_business: bool
     # TODO enum?
     account_type: int
-    is_call_to_action_enabled: Any
 
 
 @dataclass
@@ -96,6 +95,13 @@ class ProfileEditParams(SerializableAttrs['ProfileEditParams']):
     disclaimer_text: str
 
 
+class Gender(SerializableEnum):
+    MALE = 1
+    FEMALE = 2
+    UNSET = 3
+    CUSTOM = 4
+
+
 @dataclass(kw_only=True)
 class CurrentUser(BaseFullResponseUser, SerializableAttrs['CurrentUser']):
     biography: str
@@ -108,7 +114,7 @@ class CurrentUser(BaseFullResponseUser, SerializableAttrs['CurrentUser']):
     hd_profile_pic_url_info: HDProfilePictureVersion
     show_conversion_edit_entry: bool
     birthday: Any
-    gender: int
+    gender: Gender
     custom_gender: str
     email: str
     profile_edit_params: Dict[str, ProfileEditParams]

+ 1 - 1
mauigpapi/types/mqtt.py

@@ -143,7 +143,7 @@ class PubsubPayloadData(SerializableAttrs['PubsubPayloadData']):
 
 @dataclass(kw_only=True)
 class PubsubPayload(PubsubBasePayload, SerializableAttrs['PubsubPayload']):
-    data: List[PubsubPayloadData]
+    data: List[PubsubPayloadData] = attr.ib(factory=lambda: [])
 
 
 @dataclass(kw_only=True)

+ 9 - 9
mautrix_instagram/web/provisioning_api.py

@@ -69,17 +69,17 @@ class ProvisioningAPI:
             token = request.headers["Authorization"]
             token = token[len("Bearer "):]
         except KeyError:
-            raise web.HTTPBadRequest(body='{"error": "Missing Authorization header"}',
+            raise web.HTTPBadRequest(text='{"error": "Missing Authorization header"}',
                                      headers=self._headers)
         except IndexError:
-            raise web.HTTPBadRequest(body='{"error": "Malformed Authorization header"}',
+            raise web.HTTPBadRequest(text='{"error": "Malformed Authorization header"}',
                                      headers=self._headers)
         if token != self.shared_secret:
-            raise web.HTTPForbidden(body='{"error": "Invalid token"}', headers=self._headers)
+            raise web.HTTPForbidden(text='{"error": "Invalid token"}', headers=self._headers)
         try:
             user_id = request.query["user_id"]
         except KeyError:
-            raise web.HTTPBadRequest(body='{"error": "Missing user_id query param"}',
+            raise web.HTTPBadRequest(text='{"error": "Missing user_id query param"}',
                                      headers=self._headers)
 
         return u.User.get_by_mxid(UserID(user_id))
@@ -109,13 +109,13 @@ class ProvisioningAPI:
         try:
             data = await request.json()
         except json.JSONDecodeError:
-            raise web.HTTPBadRequest(body='{"error": "Malformed JSON"}', headers=self._headers)
+            raise web.HTTPBadRequest(text='{"error": "Malformed JSON"}', headers=self._headers)
 
         try:
             username = data["username"]
             password = data["password"]
         except KeyError:
-            raise web.HTTPBadRequest(body='{"error": "Missing keys"}', headers=self._headers)
+            raise web.HTTPBadRequest(text='{"error": "Missing keys"}', headers=self._headers)
 
         api, state = await get_login_state(user, username)
         try:
@@ -136,13 +136,13 @@ class ProvisioningAPI:
     async def login_2fa(self, request: web.Request) -> web.Response:
         user = await self.check_token(request)
         if not user.command_status or user.command_status["action"] != "Login":
-            raise web.HTTPNotFound(body='{"error": "No 2-factor login in progress}',
+            raise web.HTTPNotFound(text='{"error": "No 2-factor login in progress}',
                                    headers=self._headers)
 
         try:
             data = await request.json()
         except json.JSONDecodeError:
-            raise web.HTTPBadRequest(body='{"error": "Malformed JSON"}', headers=self._headers)
+            raise web.HTTPBadRequest(text='{"error": "Malformed JSON"}', headers=self._headers)
 
         try:
             username = data["username"]
@@ -150,7 +150,7 @@ class ProvisioningAPI:
             identifier = data["2fa_identifier"]
             is_totp = data["is_totp"]
         except KeyError:
-            raise web.HTTPBadRequest(body='{"error": "Missing keys"}', headers=self._headers)
+            raise web.HTTPBadRequest(text='{"error": "Missing keys"}', headers=self._headers)
 
         api: AndroidAPI = user.command_status["api"]
         state: AndroidState = user.command_status["state"]