from typing import Optional from pkg_resources import EntryPoint import requests from bbcli.utils.utils import set_cookies, set_headers # import typer from bbcli import __app_name__, __version__ from bbcli.endpoints import get_user, get_course_contents, get_contents # from bbcli.endpoints import get_user, get_course_contents, get_assignments import os from dotenv import load_dotenv from bbcli import check_valid_date, check_response import click from bbcli.commands.courses import list_courses from bbcli.commands.announcements import list_announcements, create_announcement, delete_announcement, update_announcement from bbcli.commands.contents import list_contents, create_content from bbcli.services.authorization_service import login def initiate_session(): bb_cookie = { 'name':'BbRouter', 'value': os.getenv("BB_ROUTER") } xsrf = {'X-Blackboard-XSRF': os.getenv('XSRF')} session = requests.Session() set_cookies(session, [bb_cookie]) set_headers(session, [xsrf]) return session @click.group() @click.pass_context def entry_point(ctx): ctx.ensure_object(dict) authorize_user() session = initiate_session() ctx.obj['SESSION'] = session pass """ COURSE COMMANDS ENTRY POINT """ @entry_point.group() @click.pass_context def courses(ctx): """ Commands for listing courses """ pass courses.add_command(list_courses) """ ANNOUNCEMENT COMMANDS ENTRY POINT """ @entry_point.group() @click.pass_context def announcements(ctx): """ Commands for listing, creating, deleting and updating announcements """ pass announcements.add_command(list_announcements) announcements.add_command(create_announcement) announcements.add_command(delete_announcement) announcements.add_command(update_announcement) """ CONTENT COMMANDS ENTRY POINT """ @entry_point.group() @click.pass_context def contents(ctx): """ Commands for listing, creating, deleting, updating and downloading content """ pass entry_point.add_command(get_user) entry_point.add_command(get_course_contents) entry_point.add_command(get_contents) contents.add_command(list_contents) contents.add_command(create_content) load_dotenv() cookies = {'BbRouter' : os.getenv("BB_ROUTER")} headers = {'X-Blackboard-XSRF': os.getenv('XSRF')} #----- AUTHORIZATION MODULE -----# # @app.command(name='login', help='Authorize the user.') def authorize_user(): if check_valid_date(cookies) == False: login()