(self, apiCode, requestData={})
| 1000 | return body |
| 1001 | |
| 1002 | def wocare_api(self, apiCode, requestData={}): |
| 1003 | try: |
| 1004 | url = f"https://wocare.unisk.cn/api/v1/{apiCode}" |
| 1005 | body = self.get_wocare_body(apiCode, requestData) |
| 1006 | res = self.request("post", url, data=body) |
| 1007 | if not res: return None |
| 1008 | result = res.json() |
| 1009 | if result.get("messageContent"): |
| 1010 | try: |
| 1011 | content = result["messageContent"] |
| 1012 | content = content.replace('\n', '').replace('\r', '').replace(' ', '') |
| 1013 | content = content.replace('-', '+').replace('_', '/') |
| 1014 | missing_padding = len(content) % 4 |
| 1015 | if missing_padding: |
| 1016 | content += '=' * (4 - missing_padding) |
| 1017 | try: |
| 1018 | decoded_bytes = base64.b64decode(content) |
| 1019 | decoded_str = decoded_bytes.decode('utf-8') |
| 1020 | except UnicodeDecodeError: |
| 1021 | decoded_str = decoded_bytes.decode('utf-8', errors='replace') |
| 1022 | except Exception as e: |
| 1023 | decoded_str = "{}" |
| 1024 | try: |
| 1025 | decoded = json.loads(decoded_str, strict=False) |
| 1026 | except: |
| 1027 | decoded_str = re.sub(r'[\x00-\x1f\x7f]', '', decoded_str) |
| 1028 | try: |
| 1029 | decoded = json.loads(decoded_str, strict=False) |
| 1030 | except: |
| 1031 | decoded = {} |
| 1032 | if isinstance(decoded, dict): |
| 1033 | if "data" in decoded: |
| 1034 | result["data"] = decoded["data"] |
| 1035 | else: |
| 1036 | result["data"] = decoded |
| 1037 | if "resultMsg" in decoded: |
| 1038 | result["resultMsg"] = decoded["resultMsg"] |
| 1039 | if "resultCode" in decoded: |
| 1040 | result["resultCode"] = decoded["resultCode"] |
| 1041 | except Exception as e: |
| 1042 | self.log(f"联通祝福: 解析返回失败: {str(e)}") |
| 1043 | return result |
| 1044 | except Exception as e: |
| 1045 | self.log(f"wocare_api 异常: {str(e)}") |
| 1046 | return None |
| 1047 | |
| 1048 | def wocare_getToken(self, ticket): |
| 1049 | try: |
no test coverage detected