Source code for ulaval_notify.main

"""This module contains the code related to the application execution.

:copyright: (c) 2018 by Antoine Gagné.
:license: MIT, see LICENSE for more details.
"""

import sys
from time import sleep

import requests

from .api.login import User, login
from .api.notifications import (NotificationManager,
                                find_appropriate_notification_callback,
                                create_request)
from .api.session import refresh_periodically
from .constants import SESSION_REFRESH_INTERVAL_IN_SECONDS
from .configuration import read_configuration_file
from .options import parse_arguments


[docs]def main(): """The main entry point of the application.""" arguments = parse_arguments() arguments.daemonize(_main, arguments)
def _main(arguments): with requests.Session() as session: configuration_options = read_configuration_file( arguments.configuration_file ) session_manager = login( session, User(**configuration_options.authentication) ) notification_manager = NotificationManager( session_manager, find_appropriate_notification_callback(sys.platform), create_request ) refresh_periodically(SESSION_REFRESH_INTERVAL_IN_SECONDS, session_manager) while True: notification_manager.check_notifications() sleep(arguments.time_interval) continue