Added async entrypoints in the api module.

master
blallo 2019-07-30 22:51:47 +02:00 committed by blallo
parent 5052ad4b5e
commit f302d96001
Signed by: blallo
GPG Key ID: 0CBE577C9B72DC3F
1 changed files with 65 additions and 0 deletions

65
api/async_bot.py 100644
View File

@ -0,0 +1,65 @@
# -*- encoding: utf-8 -*-
"""
Asyncio wrapper for AsyncOperator methods.
"""
import asyncio
from contextlib import contextmanager
from bot_z.async_operator import AsyncOperator
@contextmanager
def this_loop(loop):
_loop = asyncio.get_event_loop()
asyncio.set_event_loop(loop)
yield
asyncio.set_event_loop(_loop)
def init(base_url: str, name: str) -> AsyncOperator:
"""
Initialize the stateful object.
"""
return AsyncOperator(base_url, name)
async def login(op: AsyncOperator, username: str, password: str) -> bool:
"""
Executes the login asynchronously and returns
the AsyncOperator object.
"""
if not op.logged_in:
await op.login(username, password)
return op.logged_in
async def logout(op: AsyncOperator) -> bool:
"""
Executes the logout asynchronously and returns
a bool showing the success or failure of the operation.
"""
if op.logged_in:
await op.logout()
return op.logged_in
async def checkin(op: AsyncOperator) -> bool:
"""
Executes the check in asynchronously and returns
a bool showing the success or failure of the operation.
"""
if op.logged_in and not op.checked_in:
await op.checkin()
return op.checked_in
async def checkout(op: AsyncOperator) -> bool:
"""
Executes the checkout asynchronously and returns
a bool showing the success or failure of the operation.
"""
if op.logged_in and op.checked_in:
await op.checkout()
return not op.checked_in