From 7341c1b768450b139d630fc137d86f360c714847 Mon Sep 17 00:00:00 2001 From: Dima YaFlay Date: Fri, 28 Jul 2023 04:07:45 +0300 Subject: [PATCH] creates file --- .gitignore | 1 + boosty-py/API.py | 87 +++++++++++++++++++++++++++++++++++++ boosty-py/utils/__init__.py | 1 + boosty-py/utils/post.py | 7 +++ boosty-py/utils/target.py | 13 ++++++ 5 files changed, 109 insertions(+) create mode 100644 .gitignore create mode 100644 boosty-py/API.py create mode 100644 boosty-py/utils/__init__.py create mode 100644 boosty-py/utils/post.py create mode 100644 boosty-py/utils/target.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/boosty-py/API.py b/boosty-py/API.py new file mode 100644 index 0000000..79e0d8a --- /dev/null +++ b/boosty-py/API.py @@ -0,0 +1,87 @@ +import aiohttp +from utils import target +class API: + URI = "https://api.boosty.to/v1" + async def init(self, token: str, cookie: str, user: str): + """Standart API class. + + Args: + token (str): User`s token, getting from Authorization row in F11 Developer menu -> Network -> /api -> connect + cookie (str): Like token, but a little below in row Cookie + """ + self.bearer = token + self.cookie = cookie + self.header = { + "Authorization": f"Bearer {token}" + } + self.user = user + self.session = aiohttp.ClientSession(headers=self.header,cookie=self.cookie) # creates session + + async with self.session.get(f"{self.URI}/ws/connect") as resp: # gets token + if resp.status == 200: + self.token = await resp.json()["token"] + else: + raise Exception( + f"Error! API not worked... Status code: {resp.status}" + ) + + async def __get(self, url, *, to_json: bool = True, **args) -> dict | aiohttp.ClientResponse: + async with self.session.get(f"{self.URI}{url}", kwargs=args) as resp: + if resp.status == 200: + if to_json: + return await resp.json() + else: + return resp + else: + raise aiohttp.ServerConnectionError(f"Error in __get function. Status: {resp.status}") + + async def __post(self, url, *, data, to_json: bool = True, **kwargs) -> dict | aiohttp.ClientResponse: + async with self.session.post(f"{self.URI}{url}", data=data, kwargs=kwargs) as resp: + if resp.status == 200: + if to_json: + return await resp.json() + else: + return resp + else: + raise aiohttp.ServerConnectionError(f"Error in __get function. Status: {resp.status}") + async def get_target(self, post_name: str) -> target.target | list[target.target]: + """Return target on specific post or list of target + + Args: + post_name (str): Name of post`s + + Returns: + target.target | list[target.target]: target or targets to money or any + """ + json = await self.__get(f"/target/{post_name}/?", to_json=True) + if len(json.get("data")) == 0: + return "Not Found" + elif len(json.get("data")) == 1: + return target.target(json.get("data")) + else: + target_list: list[target.target] = [] + for i in json.get("data"): + target_list.append(target.target(i)) + return target_list + + async def get_post(self, post_id: str, post_author: str) -> dict: + return await self.__get(f"/blog/{post_author}/post/{post_id}/") + async def get_user(self, user: str) -> dict: + """Get ur user + + Args: + user (str): ur nickname + + Returns: + dict: all data with ur user + """ + self.user = user + return await self.__get(f"/blog/{user}") + @property + async def events(self) -> dict: + """Return all events + + Returns: + dict: dict with all events + """ + return await self.__get(f"/notification/standalone/event/") \ No newline at end of file diff --git a/boosty-py/utils/__init__.py b/boosty-py/utils/__init__.py new file mode 100644 index 0000000..b974282 --- /dev/null +++ b/boosty-py/utils/__init__.py @@ -0,0 +1 @@ +from . import * \ No newline at end of file diff --git a/boosty-py/utils/post.py b/boosty-py/utils/post.py new file mode 100644 index 0000000..35b7c8c --- /dev/null +++ b/boosty-py/utils/post.py @@ -0,0 +1,7 @@ +class post: + def __init__(self, json): + """Post! + + + """ + self.json = json \ No newline at end of file diff --git a/boosty-py/utils/target.py b/boosty-py/utils/target.py new file mode 100644 index 0000000..5c61626 --- /dev/null +++ b/boosty-py/utils/target.py @@ -0,0 +1,13 @@ +class target: + def __init__(self, json): + self.json = json + if json.get("data"): + self.json = json.get("data") + self.type: str = self.json[0].get("type") + self.blogger_id: str = self.json[0].get("bloggerUrl") + self.created_at: int = self.json[0].get("createdAt") + self.currentSum: int = self.json[0].get("currentSum") + self.targetSum: int = self.json[0].get("targetSum") + self.description: str = self.json[0].get("description") + + \ No newline at end of file