diff --git a/bbcli/__init__.py b/bbcli/__init__.py index 60dd79ce96cd9ffe37ddece9eeb565b2126656f5..c6993c641dc1e28fb8675465b5474d4ad5e6a3f8 100644 --- a/bbcli/__init__.py +++ b/bbcli/__init__.py @@ -3,8 +3,9 @@ __app_name__ = "bbcli" __version__ = "0.1.0" -from .endpoints import * -from .Node import Node +# from .endpoints import * +from .Node import * +from .login import * ( SUCCESS, diff --git a/bbcli/__main__.py b/bbcli/__main__.py index 181232b35b407cf6179f79e34658e510057762fe..59b707a8fe5bf28c406d17e4bae8ae3fdb656ea8 100644 --- a/bbcli/__main__.py +++ b/bbcli/__main__.py @@ -1,31 +1,9 @@ """RP To-Do entry point script.""" # rptodo/__main__.py -import os -from dotenv import load_dotenv -from bbcli import cli, __app_name__, login -from datetime import datetime - -load_dotenv() -cookies = {'BbRouter' : os.getenv("BB_ROUTER")} - -def check_valid_date() -> bool: - tmp = cookies['BbRouter'] - start = int(tmp.find('expires')) + len('expires') + 1 - end = int(tmp.find(',')) - timestmp = int(tmp[start : end]) - print(timestmp) - expires = datetime.fromtimestamp(timestmp) - now = datetime.now() - if expires > now: - return True - else: - return False +from bbcli import cli, __app_name__ def main(): - if check_valid_date() == False: - login() - cli.app(prog_name=__app_name__) if __name__ == "__main__": diff --git a/bbcli/cli.py b/bbcli/cli.py index 874cd5b3c6b016cd5b1b3204b9335a326ca6d0fd..bc5aae4db690f110bcc2009504c0e9d800faee2b 100644 --- a/bbcli/cli.py +++ b/bbcli/cli.py @@ -6,11 +6,32 @@ from typing import Optional import typer from bbcli import __app_name__, __version__, endpoints +import os +from dotenv import load_dotenv +from datetime import datetime +from bbcli import login app = typer.Typer() app.add_typer(endpoints.app, name='endpoints', help='Call the endpoints') +load_dotenv() +cookies = {'BbRouter' : os.getenv("BB_ROUTER")} +headers = {'X-Blackboard-XSRF': os.getenv('XSRF')} + +def check_valid_date() -> bool: + tmp = cookies['BbRouter'] + start = int(tmp.find('expires')) + len('expires') + 1 + end = int(tmp.find(',')) + timestmp = int(tmp[start : end]) + print(timestmp) + expires = datetime.fromtimestamp(timestmp) + now = datetime.now() + if expires >= now: + return True + else: + return False + def _version_callback(value: bool) -> None: if value: typer.echo(f"{__app_name__} v{__version__}") @@ -27,4 +48,9 @@ def main( is_eager=True, ) ) -> None: + if check_valid_date() == False: + login() + # load_dotenv() + # cookies['BbRouter'] = os.getenv("BB_ROUTER") + # headers['X-Blackboard-XSRF'] = os.getenv("XSRF") return diff --git a/bbcli/endpoints.py b/bbcli/endpoints.py index 8385368878e12057e3bef7284b03b0b0e72b515c..e20865d701c2b8f597335631d198f3677671dc86 100644 --- a/bbcli/endpoints.py +++ b/bbcli/endpoints.py @@ -1,23 +1,12 @@ import requests #from requests.auth import HTTPBasicAuth -import json -import pprint +# import json +# import pprint import typer -#from string_builder import StringBuilder -import click -from typing import Optional -from dotenv import load_dotenv -from bbcli.Node import Node -import os - - - +import bbcli.cli as cli app = typer.Typer() -load_dotenv() -cookies = {'BbRouter' : os.getenv("BB_ROUTER")} -headers = {'X-Blackboard-XSRF': os.getenv('XSRF')} base_url = 'https://ntnu.blackboard.com/learn/api/public/v1/' @@ -32,11 +21,10 @@ def get_user(user_name: str = typer.Argument('', help='Name of the user'))-> Non url = f'{base_url}users?userName={user_name}' x = requests.get( url, - cookies=cookies + cookies=cli.cookies ) data = x.json()['results'][0] - # typer.echo(data) fn = data['name']['given'] sn = data['name']['family'] id = data['studentId'] @@ -55,21 +43,13 @@ def get_course(course_id: str = typer.Argument('', help='Id of the course')): url = f'{base_url}courses?courseId={course_id}' x = requests.get( url, - cookies=cookies) + cookies=cli.cookies) data = x.json()['results'][0] name = data['name'] course_url = data['externalAccessUrl'] typer.echo(name) typer.echo(f'URL for the course: {course_url}') -# def open_folder(data, map): -# key = 'hasChildren' -# acc = [] -# if key in data and data[key] == True: -# acc.append - - - @app.command(name='get-course-contents') def get_course_contents(course_id: str = '_27251_1'): ''' @@ -77,7 +57,7 @@ def get_course_contents(course_id: str = '_27251_1'): ''' url = f'{base_url}courses/{course_id}/contents' typer.echo(url) - x = requests.get(url, cookies=cookies) + x = requests.get(url, cookies=cli.cookies) data = x.json()['results'] typer.echo('Mapper:') map = dict() @@ -102,7 +82,7 @@ def get_children(worklist, url, acc, count: int = 0): id = data['id'] old = f'{url}/{id}/children' # typer.echo(url) - response = requests.get(old, cookies = cookies) + response = requests.get(old, cookies = cli.cookies) if response.status_code == 403 or response.status_code == 404: typer.echo(response.json()['status']) typer.echo(response.json()['message']) @@ -125,7 +105,7 @@ def get_assignments(course_id: str = typer.Argument('_27251_1', help='The course Get the assignments ''' url = f'{base_url}courses/{course_id}/contents' - x = requests.get(url, cookies=cookies) + x = requests.get(url, cookies=cli.cookies) data = x.json()['results'] root = data[8] # root = Node(data[8]) diff --git a/bbcli/login.py b/bbcli/login.py index 9b764a3125999c73e71b83c2475d8cbc2ab7caf9..c25fa3fd89d447e49b446a43de07fef46042a9c7 100644 --- a/bbcli/login.py +++ b/bbcli/login.py @@ -1,7 +1,8 @@ from urllib import request import os from dotenv import load_dotenv -from RequestData import RequestData +# from RequestData import RequestData +from .RequestData import RequestData import requests import json from bs4 import BeautifulSoup