From 14b83e444892574d3493efd7b012721208ee99d4 Mon Sep 17 00:00:00 2001 From: tiagovla Date: Tue, 4 Oct 2022 03:12:44 -0300 Subject: [PATCH] feat: raise wrong credentials if login fails --- ppgee/__init__.py | 2 +- ppgee/__main__.py | 31 +++++++++++++++++++++---------- ppgee/client.py | 6 +++++- ppgee/errors.py | 4 ++++ pyproject.toml | 2 +- tests/test_ppgee.py | 2 +- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/ppgee/__init__.py b/ppgee/__init__.py index 518ed23..0c75421 100644 --- a/ppgee/__init__.py +++ b/ppgee/__init__.py @@ -1,3 +1,3 @@ -__version__ = "0.1.1" +__version__ = "0.1.2" from .client import PPGEE diff --git a/ppgee/__main__.py b/ppgee/__main__.py index 766a7b0..e70776a 100644 --- a/ppgee/__main__.py +++ b/ppgee/__main__.py @@ -1,6 +1,12 @@ import argparse import asyncio -from . import PPGEE +from ppgee import PPGEE +import sys +from . import errors + + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) def get_args(): @@ -13,18 +19,23 @@ def get_args(): async def cli(): args = get_args() user, password = args.username, args.password - async with PPGEE(user=user, password=password) as ppgee: - frequency_page = await ppgee.frequency() - await asyncio.sleep(1) - if frequency_page.is_available(): - print("Attendency confirmed.") - await frequency_page.confirm() - else: - print("Attendency not available yet.") - await asyncio.sleep(1) + try: + async with PPGEE(user=user, password=password) as ppgee: + frequency_page = await ppgee.frequency() + await asyncio.sleep(1) + if frequency_page.is_available(): + print("Attendency confirmed.") + await frequency_page.confirm() + else: + eprint("Attendency not available yet.") + await asyncio.sleep(1) + except errors.InvalidCredentialsException: + eprint("Invalid credentials.") + def main(): asyncio.run(cli()) + if __name__ == "__main__": main() diff --git a/ppgee/client.py b/ppgee/client.py index fe4b11d..aa87163 100644 --- a/ppgee/client.py +++ b/ppgee/client.py @@ -3,6 +3,7 @@ import logging from ppgee.http import HttpClient from ppgee.pages import FrequencyPage from functools import wraps +from ppgee import errors logger = logging.getLogger(__name__) @@ -46,7 +47,10 @@ class PPGEE: async def login(self) -> None: logger.info("Logging in...") if self.user and self.password: - await self.http.login(self.user, self.password) + resp = await self.http.login(self.user, self.password) + if "aindex" not in resp: # authentication failed + await self.close() + raise errors.InvalidCredentialsException() self.is_logged = True else: logger.info("Logged in without credentials") diff --git a/ppgee/errors.py b/ppgee/errors.py index 9e4db55..f41c5cb 100644 --- a/ppgee/errors.py +++ b/ppgee/errors.py @@ -1,2 +1,6 @@ class RequestException(Exception): ... + + +class InvalidCredentialsException(Exception): + ... diff --git a/pyproject.toml b/pyproject.toml index e431e52..19bcdc4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "ppgee" -version = "0.1.1" +version = "0.1.2" description = "" authors = ["tiagovla "] diff --git a/tests/test_ppgee.py b/tests/test_ppgee.py index c0b03da..ee8fb4e 100644 --- a/tests/test_ppgee.py +++ b/tests/test_ppgee.py @@ -2,4 +2,4 @@ from ppgee import __version__ def test_version(): - assert __version__ == "0.1.1" + assert __version__ == "0.1.2"