mirror of
https://github.com/kevin-DL/ShortMe-URL-Shortener.git
synced 2026-01-11 19:14:29 +00:00
70 lines
2.7 KiB
Python
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
|