Files
ShortMe-URL-Shortener/app/setup/setup.py
2021-03-24 15:13:32 +02:00

70 lines
2.7 KiB
Python

# ------- standard library imports -------
import os
# ------- 3rd party imports -------
from flask import Flask
from flask_restful import Api
from dotenv import load_dotenv
# ------- local imports -------
from app.server.db.extensions import db
from app.server.db.models import AuthToken
from app.server.routes.index import index_blueprint
from app.server.routes.internal.redirect_to_url import redirect_to_url_blueprint
from app.server.routes.internal.favicon import app_blueprint
from app.server.routes.internal.send_verification_code import send_otp_blueprint
from app.server.routes.internal.shorten_url import shorten_url_blueprint
from app.server.routes.your_short_url import your_short_url_blueprint
from app.server.routes.total_clicks import total_clicks_blueprint
from app.server.routes.error import error_blueprint
from app.server.routes.page_not_found import page_not_found_blueprint
from app.server.routes.api_doc import api_doc_blueprint
from app.server.routes.get_token import get_token_blueprint
from app.server.routes.your_api_token import your_api_token_blueprint
from app.server.routes.verify_code import verify_code_blueprint
from app.server.api.api import Shorten, TotalClicks, GetToken
def create_app(config_file):
"""
Creating and returning the app
"""
app_path = os.path.dirname(os.path.abspath(__file__))
project_folder = os.path.expanduser(app_path)
load_dotenv(os.path.join(project_folder, '.env'))
app = Flask(__name__, template_folder='../client/templates', static_folder='../client/static')
api = Api(app)
app.config.from_pyfile(config_file)
db.init_app(app)
with app.app_context():
db.drop_all()
db.create_all()
app_auth_token = app.secret_key
auth_token = AuthToken(auth_token=app_auth_token)
db.session.add(auth_token)
db.session.commit()
api.add_resource(Shorten, '/api/shorten')
api.add_resource(GetToken, '/api/get_token')
api.add_resource(TotalClicks, '/api/total_clicks')
app.register_blueprint(index_blueprint)
app.register_blueprint(page_not_found_blueprint)
app.register_blueprint(redirect_to_url_blueprint)
app.register_blueprint(your_short_url_blueprint)
app.register_blueprint(total_clicks_blueprint)
app.register_blueprint(error_blueprint)
app.register_blueprint(app_blueprint)
app.register_blueprint(api_doc_blueprint)
app.register_blueprint(get_token_blueprint)
app.register_blueprint(send_otp_blueprint)
app.register_blueprint(verify_code_blueprint)
app.register_blueprint(your_api_token_blueprint)
app.register_blueprint(shorten_url_blueprint)
return app