summaryrefslogtreecommitdiff
path: root/AyaBot/plugins/aio
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2020-05-05 15:12:35 +0800
committerKyomotoi <[email protected]>2020-05-05 15:12:35 +0800
commit76bc38277716348f4ecc5d8adbc199d40d9c1064 (patch)
treee201a8fd4440b7875f7275bb755332f23b2e4604 /AyaBot/plugins/aio
parent5487ad601dea57c34d8721e4373db57df2fe6f17 (diff)
downloadATRI-76bc38277716348f4ecc5d8adbc199d40d9c1064.tar.gz
ATRI-76bc38277716348f4ecc5d8adbc199d40d9c1064.tar.bz2
ATRI-76bc38277716348f4ecc5d8adbc199d40d9c1064.zip
做了些小改动
以话慢慢补全功能 目前能用的 只有other
Diffstat (limited to 'AyaBot/plugins/aio')
-rw-r--r--AyaBot/plugins/aio/__init__.py8
-rw-r--r--AyaBot/plugins/aio/__pycache__/__init__.cpython-37.pycbin0 -> 432 bytes
-rw-r--r--AyaBot/plugins/aio/requests.py71
3 files changed, 79 insertions, 0 deletions
diff --git a/AyaBot/plugins/aio/__init__.py b/AyaBot/plugins/aio/__init__.py
new file mode 100644
index 0000000..3cc81f0
--- /dev/null
+++ b/AyaBot/plugins/aio/__init__.py
@@ -0,0 +1,8 @@
+import asyncio
+from functools import partial
+from typing import Any
+
+
+async def run_sync_func(func, *args, **kwargs) -> Any:
+ return await asyncio.get_event_loop().run_in_executor(
+ None, partial(func, *args, **kwargs))
diff --git a/AyaBot/plugins/aio/__pycache__/__init__.cpython-37.pyc b/AyaBot/plugins/aio/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000..416e999
--- /dev/null
+++ b/AyaBot/plugins/aio/__pycache__/__init__.cpython-37.pyc
Binary files differ
diff --git a/AyaBot/plugins/aio/requests.py b/AyaBot/plugins/aio/requests.py
new file mode 100644
index 0000000..4f7b9d3
--- /dev/null
+++ b/AyaBot/plugins/aio/requests.py
@@ -0,0 +1,71 @@
+from typing import Optional, Any
+
+import requests
+from requests import *
+
+from . import run_sync_func
+
+
+class AsyncResponse:
+ def __init__(self, response: requests.Response):
+ self.raw_response = response
+
+ @property
+ def ok(self) -> bool:
+ return self.raw_response.ok
+
+ def __repr__(self):
+ return '<AsyncResponse [%s]>' % self.raw_response.status_code
+
+ def __bool__(self):
+ return self.ok
+
+ @property
+ async def content(self) -> Optional[bytes]:
+ return await run_sync_func(lambda: self.raw_response.content)
+
+ @property
+ async def text(self) -> str:
+ return await run_sync_func(lambda: self.raw_response.text)
+
+ async def json(self, **kwargs) -> Any:
+ return await run_sync_func(self.raw_response.json, **kwargs)
+
+
+async def request(method, url, **kwargs) -> AsyncResponse:
+ return AsyncResponse(await run_sync_func(requests.request,
+ method=method, url=url, **kwargs))
+
+
+async def get(url, params=None, **kwargs) -> AsyncResponse:
+ return AsyncResponse(
+ await run_sync_func(requests.get, url=url, params=params, **kwargs))
+
+
+async def options(url, **kwargs) -> AsyncResponse:
+ return AsyncResponse(
+ await run_sync_func(requests.options, url=url, **kwargs))
+
+
+async def head(url, **kwargs) -> AsyncResponse:
+ return AsyncResponse(await run_sync_func(requests.head, url=url, **kwargs))
+
+
+async def post(url, data=None, json=None, **kwargs) -> AsyncResponse:
+ return AsyncResponse(await run_sync_func(requests.post, url=url,
+ data=data, json=json, **kwargs))
+
+
+async def put(url, data=None, **kwargs) -> AsyncResponse:
+ return AsyncResponse(
+ await run_sync_func(requests.put, url=url, data=data, **kwargs))
+
+
+async def patch(url, data=None, **kwargs) -> AsyncResponse:
+ return AsyncResponse(
+ await run_sync_func(requests.patch, url=url, data=data, **kwargs))
+
+
+async def delete(url, **kwargs) -> AsyncResponse:
+ return AsyncResponse(
+ await run_sync_func(requests.delete, url=url, **kwargs))