Skip to content

Commit

Permalink
Translated description in modules
Browse files Browse the repository at this point in the history
  • Loading branch information
tankalxat34 committed Nov 20, 2022
1 parent 7a562f1 commit 4a16894
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 73 deletions.
60 changes: 19 additions & 41 deletions WgLestaAPI/Application.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
Реализация общих методов для работы библиотеки WgLestaAPI
Implementing common methods for running the WgLestaAPI library
"""

import urllib3
Expand All @@ -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]
Expand All @@ -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():
Expand All @@ -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:
Expand Down Expand Up @@ -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
Expand All @@ -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)
Expand All @@ -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
Expand Down
20 changes: 0 additions & 20 deletions WgLestaAPI/Authentication.py

This file was deleted.

23 changes: 12 additions & 11 deletions WgLestaAPI/Constants.py
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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)


Expand All @@ -64,7 +65,7 @@ class LONGNAMES(object):
}


# выборка необходимых параметров по короткому названию игры и региону
# selecting the necessary parameters by short game name and region
INFO = {
# wot
GAMENAMES.SHORTNAMES.WOT: {
Expand Down Expand Up @@ -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
}
}
2 changes: 1 addition & 1 deletion WgLestaAPI/Exceptions.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
Описание ошибок, возникающих при работе библиотеки WgLestaAPI
Description of errors that occur during operation of the WgLestaAPI library
"""

class RegionDoesNotExisting(Exception):
Expand Down

0 comments on commit 4a16894

Please sign in to comment.