Python-клиент для Mellophone (sync + async).
- Python
>= 3.7
Документация для разработчиков вынесена в DEVELOPMENT.md.
Установка из Git (рекомендуется фиксировать тег, например v3.1.0):
pip install "mellophone-valve[httpx] @ git+https://github.com/CourseOrchestra/mellophone-valve.git@v3.1.0"
pip install "mellophone-valve[requests] @ git+https://github.com/CourseOrchestra/mellophone-valve.git@v3.1.0"
pip install "mellophone-valve[httpx,requests] @ git+https://github.com/CourseOrchestra/mellophone-valve.git@v3.1.0"Для Pipenv надежнее указывать Git-зависимость с extras напрямую в Pipfile.
[packages]
mellophone-valve = {git = "https://github.com/CourseOrchestra/mellophone-valve.git", ref = "v3.1.0", extras = ["httpx"]}
# или
mellophone-valve = {git = "https://github.com/CourseOrchestra/mellophone-valve.git", ref = "v3.1.0", extras = ["requests"]}
# или
mellophone-valve = {git = "https://github.com/CourseOrchestra/mellophone-valve.git", ref = "v3.1.0", extras = ["httpx", "requests"]}Для Poetry надежнее фиксировать Git-зависимость с extras в pyproject.toml:
[tool.poetry.dependencies]
mellophone-valve = { git = "https://github.com/CourseOrchestra/mellophone-valve.git", rev = "v3.1.0", extras = ["httpx"] }
# или
mellophone-valve = { git = "https://github.com/CourseOrchestra/mellophone-valve.git", rev = "v3.1.0", extras = ["requests"] }
# или
mellophone-valve = { git = "https://github.com/CourseOrchestra/mellophone-valve.git", rev = "v3.1.0", extras = ["httpx", "requests"] }CLI-вариант для Poetry:
poetry add "git+https://github.com/CourseOrchestra/mellophone-valve.git#v3.1.0" --extras httpx
poetry add "git+https://github.com/CourseOrchestra/mellophone-valve.git#v3.1.0" --extras requests
poetry add "git+https://github.com/CourseOrchestra/mellophone-valve.git#v3.1.0" --extras "httpx requests"uv add "mellophone-valve[httpx] @ git+https://github.com/CourseOrchestra/mellophone-valve.git@v3.1.0"
uv add "mellophone-valve[requests] @ git+https://github.com/CourseOrchestra/mellophone-valve.git@v3.1.0"
uv add "mellophone-valve[httpx,requests] @ git+https://github.com/CourseOrchestra/mellophone-valve.git@v3.1.0"Примечания:
async-методы требуютhttpx(mellophone-valve[httpx]).- При установке только
requestsдоступны толькоsync-методы. - В качестве
refможно использоватьtag,branchилиcommit SHA.
from mellophone import Mellophone
client = Mellophone(base_url="http://localhost:8082/mellophone")
session_id = client.login("user", "password")
print(client.is_authenticated(session_id))
client.logout(session_id)Класс Mellophone поддерживает пары методов sync/async.
Авторизация и сессия:
login/login_async- выполняет логин, сохраняетsession_idв клиенте и возвращаетses_id(если не передан, генерируется автоматически).logout/logout_async- завершает сессию поses_id(или поself.session_id).is_authenticated/is_authenticated_async- проверяет сессию; возвращает словарьuserпри успехе илиFalseпри403.
Проверки:
check_credentials/check_credentials_async- проверяет логин/пароль без создания сессии, возвращает данныеuser.check_name/check_name_async- проверяет логин/имя пользователя в текущей или переданной сессии, возвращает данныеuser.
Пароли и идентификатор сессии:
change_pwd/change_pwd_async- меняет пароль пользователя, связанного с переданнымses_id(еслиses_idне передан, используетсяself.session_id).change_user_pwd/change_user_pwd_async- меняет пароль указанного пользователяusername.change_app_ses_id/change_app_ses_id_async- меняетses_idсессии (oldsesid->newsesid);self.session_idобновляется только еслиses_idне передан.
Провайдеры и списки пользователей:
import_gp/import_gp_async- импортирует groups/providers, возвращает список строк из ответа API.get_provider_list/get_provider_list_async- возвращает список или структуру провайдеров по учетным данным.get_user_list/get_user_list_async- возвращает список пользователей поgp(опциональноip,pid); токен берется изself.user_manage_token.
Настройки и user management:
set_settings/set_settings_async- обновляет настройки (lockout_time,login_attempts_allowed); токен берется изself.set_settings_token.create_user/create_user_async- создает пользователя (POST /user/create, XML payload); токен берется изself.user_manage_token.update_user/update_user_async- обновляет пользователя поsid(POST /user/{sid}, XML payload); токен берется изself.user_manage_token.delete_user/delete_user_async- удаляет пользователя поsid(DELETE /user/{sid}); токен берется изself.user_manage_token.
Состояние сессии:
set_state/set_state_async- сохраняет произвольное состояние дляses_id.get_state/get_state_async- возвращает ранее сохраненное состояние дляses_id.
Исключения:
HttpError- базовая HTTP-ошибка API (status_code,response_text).BadRequestError- ошибкаHTTP 400(некорректный запрос).UnauthorizedError- ошибкаHTTP 401(неавторизован).ForbiddenError- ошибкаHTTP 403(доступ запрещен).NotFoundError- ошибкаHTTP 404(ресурс не найден).ServerError- серверная ошибкаHTTP 5xx.TransportError- транспортная ошибка HTTP-клиента (сеть/соединение).RequestTimeoutError- превышен таймаут запроса.ResponseParseError- не удалось распарсить XML-ответ API.MissingTokenError- в клиенте не задан обязательный токен (set_settings_tokenилиuser_manage_token).AsyncClientUnavailableError- вызваныasync-методы без установленногоhttpx.