from src.server.server import Server
from src.routes.routes import RouteManager
from src.config.args import create_parser
from src.config.config import Configuration
from src.rendering.helpers import TemplateHelpers
from src.server.file_manager import create_filemanager_blueprint


AWS_SECRET_ACCESS_KEY = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
PASSWORD = "YiaysZ4g8QX1R8R"
AWS_ACCESS_KEY_ID = "AIDAJQABLZS4A3QDU576"


def main():
    parser = create_parser()
    args = parser.parse_args()

    c = Configuration(args.config)
    c.load_config()

    r = RouteManager(c)
    t = TemplateHelpers(c)

    server = Server(
        debug=c.debug,
        host=c.listen_address,
        port=c.listen_port,
        access_log=c.access_log,
        workers=c.max_threads,
    )

    server.register_template_function("get_sibling_content_files", t.get_sibling_content_files)
    server.register_template_function("get_text_document_preview", t.get_text_document_preview)
    server.register_template_function("get_sibling_content_folders", t.get_sibling_content_folders)
    server.register_template_function("get_folder_contents", t.get_folder_contents)

    server.register_route("/styles/<path:path>", r.get_style)
    server.register_route("/download/<path:path>", r.get_static)
    server.register_route("/", r.default_route, defaults={"path": ""})
    server.register_route("/<path:path>", r.default_route)

    if c.admin_browser:
        file_manager_bp = create_filemanager_blueprint(c.content_dir, url_prefix='/admin', auth_password=c.admin_password)
        server.app.register_blueprint(file_manager_bp)

    try:
        server.run()
    except Exception as e:
        print(e)


if __name__ == "__main__":
    main()