BetAgr-common - base async api-clients for betagr-project wrote with aiohttp
A set of tools, utilities and base async api-classes for maintaining the infrastructure of betagr-project services.
Requirements
- python>=3.6
- aiohttp>=3.6
Usage
pip install betagr-common
# or only for user
python -m pip install --user betagr-common
# or for pipenv
pipenv install betagr-common
BetAgr-common ships with two base api-classes: BaseClient and BaseClientSSO.
BaseClient
It is a base class provides a basic REST API methods which are simple wrapper over a aiohttp.request. Сlass also implements basic logging of client requests and handling cookies within one client, since the connection session exists only during one request.
Api-clients of each services should be inherited from the BaseClient.
from common.rest_client.base_client import BaseClient
class BakeryClient(BaseClient):
_host = 'www.some-bakery.com'
_port = 8000
def __init__(self, headers):
super().__init__(headers=headers)
async def bake_bread(self, bread_flour='first-grade'):
body = {'flour': bread_flour}
api_uri = 'api/bake-bread'
return await self.post(api_uri, body=body)
import asyncio
import BakeryClient
db_orders = {'John Doe': {'flour': 'first-grade'},
'Anderson': {'flour': 'second-grade'}}
async def main():
async for client in db_orders:
custom_headers = {'Content-Type': 'application/json'}
bakery_client = BakeryClient(custom_headers)
bread_flour_type = db_orders[client].get('flour')
response = await bakery_client.bake_bread(bread_flour_type)
assert response.status == 200 # bread was bake!
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
BaseClientSSO
Api abstraction for sso-client with the release of basic methods:
- sign_up
- sign_in
- sign_out
- reset_password
import os
import asyncio
from common.rest_client.base_client_sso import BaseClientSSO
async def main():
# env should contains 'SSO_API_HOST' and 'SSO_API_PORT' variables
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
sso_client = BaseClientSSO(headers)
body = {'username': 'john doe',
'password': 'qwerty'}
response = await sso_client.sign_up(body)
print(response) # ClientResponse -> defaults
# {'json': {},
# 'status': 200,
# 'headers': {'Content-Type: "application/json"},
# 'raw_content': b''}
body = {'username': 'john doe',
'password': 'qwerty'}
response = await sso_client.sign_in(body)
print(response)
body = {'username': 'john doe',
'old_password': 'qwerty',
'new_password': 'qwerty'}
response = await sso_client.reset_password(body)
print(response)
response = await sso_client.sign_out()
print(response)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Environment variables are used to determine url/connection parameters in base classes:
| env variable | value |
|---|---|
| SSO_API_HOST | localhost, www.example.com |
| SSO_API_PORT | 8080 |
| PARSER_API_HOST | localhost, www.example.com |
| PARSER_API_PORT | 8080 |
| AGGREGATOR_API_HOST | localhost, www.example.com |
| AGGREGATOR_API_PORT | 8080 |
| COMMON_API_CLIENT_LOGGING_LEVEL | 40 |
see numeric represents logging level here: https://docs.python.org/3/library/logging.html#logging-levels
Release files for betagr-common 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| betagr-common-0.1.8.tar.gz | 5.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| betagr_common-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.1 kB
Release files / betagr-common-0.1.8.tar.gz
| Download URL | betagr-common-0.1.8.tar.gz |
|---|---|
| Size | 5.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a293c0c2b86fcc5cd14fceb69886dd5b0824cb62f5cf28a41db609743c5291dd
|
|
BLAKE2b-256 checksum How to use checksums |
449569b769cca00db885363a990df4e5320422c1de5d311835eaacea29043b63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8
|
Release files / betagr_common-0.1.8-py3-none-any.whl
| Download URL | betagr_common-0.1.8-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7a41b969f6c352e91b57da8855ebba62ecb7a7a449a6a9c8d20feb1d9607466e
|
|
BLAKE2b-256 checksum How to use checksums |
32d798b825f6071f2579c25e54555e7b934ee4baa3fcade808cd5727f1e1387f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.1 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.6.8
|