From 4a168948f4222762745fc04007315457ca069499 Mon Sep 17 00:00:00 2001 From: Alexander Podstrechnyy Date: Sun, 20 Nov 2022 19:57:55 +0300 Subject: [PATCH] Translated description in modules --- WgLestaAPI/Application.py | 60 ++++++++++++------------------------ WgLestaAPI/Authentication.py | 20 ------------ WgLestaAPI/Constants.py | 23 +++++++------- WgLestaAPI/Exceptions.py | 2 +- 4 files changed, 32 insertions(+), 73 deletions(-) delete mode 100644 WgLestaAPI/Authentication.py diff --git a/WgLestaAPI/Application.py b/WgLestaAPI/Application.py index 753bbbe..de5ca03 100644 --- a/WgLestaAPI/Application.py +++ b/WgLestaAPI/Application.py @@ -1,5 +1,5 @@ """ -Реализация общих методов для работы библиотеки WgLestaAPI +Implementing common methods for running the WgLestaAPI library """ import urllib3 @@ -10,54 +10,32 @@ class Query: - """Поля запроса в URL в виде ?key1=value1&key2=3000""" + """Query fields in the URL as ?key1=value1&key2=3000""" def __init__(self, **kwargs): """ - Класс для работы с полями запроса вида `?key1=value1&key2=3000` + Query fields in the URL as `?key1=value1&key2=3000` - Если вы хотите создать query из параметров - просто вводите их один за другим, либо распакуйте словарь через оператор **. + If you want to create a query from parameters - just enter them one by one, or unpack the dictionary with the `**` operator. - Если у вас есть ссылка, содержащая query, и вы хотите их распарсить - передайте сюда только один аргумент url, содержащию ссылку с query параметрами. - """ + If you have a link containing query parameters and you want to unpack them, pass only one url argument containing the link with query parameters here. """ self.query = kwargs def pop(self, *args): - """Удаляет поле/поля""" + """Delete field/fields""" for key in args: self.query.pop(key) def extend(self, **kwargs): - """Добавляет указанные ключи-значения в query. Если добавляется уже существующий ключ - его значение заменяется на переданное""" + """Adds the specified value keys to the query. If an already existing key is added, its value is replaced by the passed""" if not ("url" in self.query and len(self.query.keys()) == 1): self.query = {**self.query, **kwargs} else: self.query = self.parse() self.extend(**kwargs) - def parse_per_symbol(self) -> dict: - """Аналог self.parse(), однако данный метод обрабатывает строку query посимвольно, а не через split""" - try: - string_for_view = "?".join(self.query["url"].split("?")[1:]) - locale_key = "" - locale_value = "" - flag = False - for s in string_for_view: - if s == "=": - flag = True - - if flag: - locale_value += s - else: - locale_key += s - - return string_for_view - - except KeyError: - raise KeyError("The \"url\" argument was not found!") - def parse(self) -> dict: - """Получить из ссылки все query в виде словаря. Если не передан аргумент url - возвращается ошибка KeyError""" + """Get all queries as a dictionary from the link. If url argument is not passed - KeyError is returned""" try: first_scan = self.query["url"].split("&") first_scan[0] = first_scan[0].split("?")[1] @@ -77,7 +55,7 @@ def parse(self) -> dict: @property def string(self) -> str: - """Получить текущий query в виде строки""" + """Get the current query as a string""" if not ("url" in self.query and len(self.query.keys()) == 1): locale_string = str() for key in self.query.keys(): @@ -88,12 +66,12 @@ def string(self) -> str: @property def full(self) -> str: - """Получить query в полной записи""" + """Get query in full entry""" return "?" + self.string @property def dictionary(self) -> dict: - """Получить текущий query в виде словаря""" + """Get the current query as a dictionary""" if not ("url" in self.query and len(self.query.keys()) == 1): return self.query else: @@ -149,13 +127,13 @@ def execute(self, method: str, full_url: str) -> dict: class Method: def __init__(self, api_method: str, game_shortname: Constants.GAMENAMES.SHORTNAMES, query: Query, region: Constants.REGION = Constants.REGION.RU, type_request: Constants.TYPEREQUESTS = Constants.TYPEREQUESTS.GET) -> None: """ - Класс для выполнения методов API в формате `method_block.method_name`. Для ввода параметров используйте константы из модуля `Constants` данной библиотеки. + Class for executing API methods in `method_block.method_name` format. Use constants from the `Constants` module of this library to enter parameters. - :param api_method Выполняемый метод API. Синтаксис: `method_block.method_name` - :param game_shortname Короткое название игры. Например: `wot`, `tanki`, `wotb`, `wows` и т.д. - :param query Объект `Query` данной библиотеки, обязательно содержащий `application_id` вашего приложения. Параметры, передаваемые в URL вместе с запросом. - :param region Регион, в котором находится игра. По умолчанию равен `ru`. - :param type_request Тип запроса: `GET` или `POST`. По умолчанию равен `GET`. + :param api_method Executable API method. Syntax: `method_block.method_name` + :param game_shortname The short name of the game. For example: `wot`, `tanki`, `wotb`, `wows` etc. + :param query The `Query` object of this library, necessarily containing `application_id` of your application. Parameters passed to the URL along with the query. + :param region The region in which the game is located. The default is `ru`. + :param type_request Query type: `GET` or `POST`. The default is `GET`. """ self.api_method = api_method @@ -175,7 +153,7 @@ def __init__(self, api_method: str, game_shortname: Constants.GAMENAMES.SHORTNAM self.url = self.url_constructor.get() + f"{self.method_block}/{self.method_name}/{self.query.full}" def execute(self) -> dict | urllib3.response.HTTPResponse: - """Выполняет указанный метод API. В случае получения JSON возвращает объект типа `dict`. В противном случае - объект `urllib3.response.HTTPResponse`""" + """Executes specified API method. In case of JSON it returns an object of `dict` type. Otherwise it returns `urllib3.response.HTTPResponse` object""" res = self.http.request(self.type_request, self.url.lower()) try: return json.loads(res.data) @@ -184,7 +162,7 @@ def execute(self) -> dict | urllib3.response.HTTPResponse: @property def docs(self) -> str: - """Ссылка на официальное описание метода на сайте Wagraming.net или Lesta Games""" + """Link to the official description of the method at Wagraming.net or Lesta Games""" api_holder = Constants.APIHOLDERS.WG if self.region in Constants.REGION.CIS: api_holder = Constants.APIHOLDERS.LESTA diff --git a/WgLestaAPI/Authentication.py b/WgLestaAPI/Authentication.py deleted file mode 100644 index 75e9272..0000000 --- a/WgLestaAPI/Authentication.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Модуль не работает | WgLestaAPI -Модуль для аутентификации пользователя и получения соответствующего временного access_token -""" - -import urllib3 -import json - -from . import Constants -from . import Application - - -class UserAuth: - def __init__(self, application_id: str, **kwargs): - self.application_id = application_id - self.app = Application.App(self.application_id) - self.kwargs = kwargs - - def execute(self): - return self.app.execute("GET", Constants.AUTH_URL + Application.Query(application_id=self.application_id, nofollow=1, display="page", **self.kwargs).full) diff --git a/WgLestaAPI/Constants.py b/WgLestaAPI/Constants.py index 9f5676f..9e80161 100644 --- a/WgLestaAPI/Constants.py +++ b/WgLestaAPI/Constants.py @@ -1,22 +1,23 @@ """ -Константы для работы библиотеки WgLestaAPI +Constants for running the WgLestaAPI library """ class APIHOLDERS(object): - """Владельцы API""" + """API Owners""" WG = "wargaming.net" LESTA = "lesta.ru" class TYPEREQUESTS(object): - """Типы запросов, доступные для API""" + """Request types available for API""" GET = "GET" POST = "POST" ALL = (GET, POST) + class REGION(object): - """Перечень доступных для API регионов""" + """List of regions available for API""" RU = "ru" SU = "su" EU = "eu" @@ -30,9 +31,9 @@ class REGION(object): class GAMENAMES(object): - """Назавания игр Wargaming.net и Lesta Games для выполнения методов API""" + """Names of Wargaming.net and Lesta Games games to perform API methods""" class SHORTNAMES(object): - """Короткие названия""" + """Short names""" WOT = "wot" # World of Tanks TANKI = "tanki" # Мир танков WOTB = "wotb" # World of Tanks Blitz (Tanks Blitz) @@ -41,11 +42,11 @@ class SHORTNAMES(object): WOWP = "wowp" # World of Warplanes WG = "wgn" # Wagraming.net - # Все короткие названия + # All short names ALL = (WOT, TANKI, WOTB, WOTC, WOWS, WOWP, WG) class LONGNAMES(object): - """Длинные названия""" + """Long names""" WOT = "worldoftanks" # World of Tanks TANKI = "tanki" # Мир танков WOTB = "wotblitz" # World of Tanks Blitz (Tanks Blitz) @@ -54,7 +55,7 @@ class LONGNAMES(object): WOWP = "worldofwarplanes" # World of Warplanes WG = "worldoftanks" # Wagraming.net - # Все длинные названия + # All long names ALL = (WOT, TANKI, WOTB, WOTC, WOWS, WOWP, WG) @@ -64,7 +65,7 @@ class LONGNAMES(object): } -# выборка необходимых параметров по короткому названию игры и региону +# selecting the necessary parameters by short game name and region INFO = { # wot GAMENAMES.SHORTNAMES.WOT: { @@ -106,6 +107,6 @@ class LONGNAMES(object): GAMENAMES.SHORTNAMES.WG: { "api": "api", "longname": GAMENAMES.LONGNAMES.WG, - "region_list": [REGION.EU, REGION.NA] # REGION.ASIA поддерживает не все методы + "region_list": [REGION.EU, REGION.NA] # REGION.ASIA does not support all methods } } \ No newline at end of file diff --git a/WgLestaAPI/Exceptions.py b/WgLestaAPI/Exceptions.py index f564736..5354bfd 100644 --- a/WgLestaAPI/Exceptions.py +++ b/WgLestaAPI/Exceptions.py @@ -1,5 +1,5 @@ """ -Описание ошибок, возникающих при работе библиотеки WgLestaAPI +Description of errors that occur during operation of the WgLestaAPI library """ class RegionDoesNotExisting(Exception):