add sample

This commit is contained in:
2025-03-25 22:43:34 -03:00
parent 02f0b317ae
commit e1eae86aa1
24 changed files with 603 additions and 51 deletions

49
http-api/konviva.py Normal file
View File

@@ -0,0 +1,49 @@
from dataclasses import asdict, dataclass
from urllib.parse import quote as urlquote
from urllib.parse import urlencode, urlparse
import requests
from aws_lambda_powertools.event_handler.exceptions import BadRequestError
from glom import glom
from settings import KONVIVA_API_URL, KONVIVA_SECRET_KEY
class KonvivaError(BadRequestError):
pass
@dataclass
class KonvivaToken:
login: str
token: str
nonce: str
def token(username: str) -> KonvivaToken:
url = urlparse(KONVIVA_API_URL)._replace(
path='/action/api/usuarios/token',
query=f'login={urlquote(username)}',
)
headers = {
'Authorization': f'KONVIVA {KONVIVA_SECRET_KEY}',
'Content-Type': 'application/json',
}
r = requests.get(url.geturl(), headers=headers)
r.raise_for_status()
if err := glom(r.json(), 'errors.0', default=None):
raise KonvivaError(err)
return KonvivaToken(**r.json())
def redirect_uri(token: KonvivaToken) -> str:
url = urlparse(KONVIVA_API_URL)._replace(
path='/action/acessoExterno',
query=urlencode(asdict(token)),
)
return url.geturl()