Unverified Commit 729e7fe2 authored by Guillermo Sanz López's avatar Guillermo Sanz López Committed by GitHub
Browse files

Merge pull request #5 from Telefonica/refactor-endpoints

Refactor endpoints
parents 3e6f0a4a 73ffc4a6
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -6,6 +6,10 @@ import json
import requests
import os
from .controllers.default_controller import backoffice_routes
from .controllers.invokers_controller import invokers_routes
from .controllers.providers_controller import providers_routes
from .controllers.users_controller import users_routes
from .controllers.apis_controller import apis_routes
from .controllers.login import access_routes
from flask_cors import CORS

@@ -18,6 +22,10 @@ CORS(app) # habilita CORS para todas las rutas en la aplicación
# other option modify URL ->  app.register_blueprint(backoffice_routes, url_prefix="/resources")
app.register_blueprint(backoffice_routes)
app.register_blueprint(access_routes)
app.register_blueprint(invokers_routes, url_prefix="/invokers")
app.register_blueprint(providers_routes, url_prefix="/providers")
app.register_blueprint(apis_routes, url_prefix="/apis")
app.register_blueprint(users_routes, url_prefix="/users")


@app.route("/options", methods=["OPTIONS"])
+80 −0
Original line number Diff line number Diff line
#!/usr/bin/env python3

from flask import Blueprint, jsonify
from ..core.operations import Operations
from flask_jwt_extended import jwt_required, get_jwt_identity
from flask_cors import cross_origin
import requests
from flask import request


# create blueprint backoffice_routes
apis_routes = Blueprint("apis_routes", __name__)
operations = Operations()   # create operations object -> operations.py


# GET apis with date order and pagination
@cross_origin()
@apis_routes.route("/", methods=["GET"])
@jwt_required()
def get_apis_pages_order():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    order = request.args.get('order', default="ascending", type=str)
    return operations.get_apis_pages_order(page, page_size, order)

# GET a JSON with all apis
@cross_origin()
@apis_routes.route("/apisTotal", methods=["GET"])
@jwt_required()
def get_apis():
    return operations.get_apis()

# GET apis with pagination
@cross_origin()
@apis_routes.route("/pages", methods=["GET"])
@jwt_required()
def get_apis_pages():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.get_apis_pages(page, page_size)

# GET the number of apis
@cross_origin()
@apis_routes.route("/num", methods=["GET"])
@jwt_required()
def get_num_apis():    
    return operations.get_num_apis()

# SEARCH apis
@cross_origin()
@apis_routes.route("/search", methods=["GET"])
@jwt_required()
def search_apis():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_apis(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500

# DELETE multiple apis
@apis_routes.route("/", methods=["DELETE"])
@jwt_required()
def delete_apis_route():
    try:
        apis = request.json.get('api', [])

        if not apis:
            return jsonify(message="No apis provided for delete."), 400

        responses = operations.delete_providers_services(apis)

        return jsonify(responses), 200

    except Exception as e:
        return jsonify(message="Error deleting apis", error=str(e)), 500
 No newline at end of file
+0 −338
Original line number Diff line number Diff line
@@ -13,108 +13,6 @@ GRAFANA_URL = 'http://grafana.mon.svc.cluster.local:3000'
backoffice_routes = Blueprint("backoffice_routes", __name__)
operations = Operations()   # create operations object -> operations.py

@cross_origin()
@backoffice_routes.route("/resources/invokers", methods=["GET"])
@jwt_required()
def get_invokers():
    return operations.get_invokers()

# GET /resources/invokers?page=1&page_size=10
@cross_origin()
@backoffice_routes.route("/resources/invokersPages", methods=["GET"])
@jwt_required()
def get_invokersPages():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.get_invokersPages(page, page_size)

@cross_origin()
@backoffice_routes.route("/resources/invokersPagesOrder", methods=["GET"])
@jwt_required()
def get_invokers_pages_order():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    order = request.args.get('order', default="ascending", type=str)
    return operations.get_invokers_pages_order(page, page_size, order)

@cross_origin()
@backoffice_routes.route("/invokers/search", methods=["GET"])
@jwt_required()
def search_invokers():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_invokers(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500


@cross_origin()
@backoffice_routes.route("/resources/numInvokers", methods=["GET"])
@jwt_required()
def get_num_ixnvokers():
    return operations.get_num_invokers()


@cross_origin()
@backoffice_routes.route("/resources/providers", methods=["GET"])
@jwt_required()
def get_providers():
    return operations.get_providers()

# GET /resources/providers?page=1&page_size=10
@cross_origin()
@backoffice_routes.route("/resources/providersPages", methods=["GET"])
@jwt_required()
def get_providersPages():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.get_providers_pages(page, page_size)

@cross_origin()
@backoffice_routes.route("/resources/providersPagesOrder", methods=["GET"])
@jwt_required()
def get_providers_pages_order():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    order = request.args.get('order', default="ascending", type=str)
    return operations.get_providers_pages_order(page, page_size, order)


@cross_origin()
@backoffice_routes.route("/providers/search", methods=["GET"])
@jwt_required()
def search_providers():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_providers(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500

@cross_origin()
@backoffice_routes.route("/resources/numProviders", methods=["GET"])
@jwt_required()
def get_num_providers():
    return operations.get_num_providers()


@cross_origin()
@backoffice_routes.route("/resources/invokers/security/<invoker_id>", methods=["GET"])
@jwt_required()
def get_invoker_security_context(invoker_id):
    print("ESTOY EN BACKOFFICE ROUTES     INVOKER ID: ", invoker_id)
    if invoker_id == "null":
        return jsonify(message="Invalid invoker_id", security_contexts=None), 400
    return operations.get_invoker_security_context(invoker_id)


@cross_origin()
@@ -125,242 +23,6 @@ def get_events(id):
        return jsonify(message="Invalid events id", object=None), 400
    return operations.get_events(id)


@cross_origin()
@backoffice_routes.route("/resources/providers/services/<id>", methods=["GET"])
@jwt_required()
def get_provider_services(id):
    if id == "null":
        return jsonify(message="Invalid apf_id", object=None), 400
    return operations.get_provider_services(id)

@cross_origin()
@backoffice_routes.route("/resources/users/<name>", methods=["GET"])
@jwt_required()
def get_capif_user(name):
    if id == "null":
        return jsonify(message="Invalid name", object=None), 400
    return operations.get_user(name)

@cross_origin()
@backoffice_routes.route("/users", methods=["GET"])
@jwt_required()
def get_capif_users():
    if id == "null":
        return jsonify(message="Invalid id", object=None), 400
    return operations.get_users()

# GET /resources/users?page=1&page_size=10
@cross_origin()
@backoffice_routes.route("/resources/usersPagesRetrieve", methods=["GET"])
@jwt_required()
def get_users_pages():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.retrieve_users_pages(page, page_size)

@cross_origin()
@backoffice_routes.route("/resources/usersPagesOrder", methods=["GET"])
@jwt_required()
def get_users_pages_order():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    order = request.args.get('order', default="ascending", type=str)
    return operations.retrieve_users_pages_order(page, page_size, order)

@cross_origin()
@backoffice_routes.route("/users/search", methods=["GET"])
@jwt_required()
def search_users():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_users(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500

@cross_origin()
@backoffice_routes.route("/resources/numUsers", methods=["GET"])
@jwt_required()
def get_capif_num_users():
    if id == "null":
        return jsonify(message="Invalid id", object=None), 400
    return operations.get_num_user()

@cross_origin()
@backoffice_routes.route("/invokers/<id>", methods=["DELETE"])
@jwt_required()
def delete_invoker(id):
    if id == "null":
        return jsonify(message="Invalid id", object=None), 400
    return operations.delete_invoker(id)

@backoffice_routes.route("/invokers10", methods=["DELETE"])
@jwt_required()
def delete_invokers_route():
    try:
        invoker_ids = request.json.get('invoker_ids', [])

        if not invoker_ids:
            return jsonify(message="No invoker IDs provided"), 400

        responses = operations.delete_invokers(invoker_ids)

        return jsonify(responses), 200

    except Exception as e:
        return jsonify(message="Error deleting invokers", error=str(e)), 500


@cross_origin()
@backoffice_routes.route("/providers/<id>", methods=["DELETE"])
@jwt_required()
def delete_provider(id):
    if id == "null":
        return jsonify(message="Invalid id", object=None), 400
    return operations.delete_provider(id)

@backoffice_routes.route("/providers10", methods=["DELETE"])
@jwt_required()
def delete_providers_route():
    try:
        provider_ids = request.json.get('provider_ids', [])

        if not provider_ids:
            return jsonify(message="No provider IDs provided"), 400

        responses = operations.delete_providers(provider_ids)

        return jsonify(responses), 200

    except Exception as e:
        return jsonify(message="Error deleting providers", error=str(e)), 500


@cross_origin()
@backoffice_routes.route("/invokers/security/<invoker_id>/<aef_id>/<api_id>", methods=["DELETE"])
@jwt_required()
def delete_security_context(invoker_id, aef_id, api_id):
    if invoker_id == "null" or aef_id == "null" or api_id == "null":
        return jsonify(message="Invalid parameters", object=None), 400
    return operations.delete_security_context(invoker_id, aef_id, api_id)


@cross_origin()
@backoffice_routes.route("/providers/services/<apf_id>/<api_id>", methods=["DELETE"])
@jwt_required()
def delete_provider_service(apf_id, api_id):
    if apf_id == "null" or api_id == "null":
        return jsonify(message="Invalid parameters", object=None), 400
    return operations.delete_provider_service(apf_id, api_id)

@backoffice_routes.route("/apis10", methods=["DELETE"])
@jwt_required()
def delete_apis_route():
    try:
        apis = request.json.get('api', [])

        if not apis:
            return jsonify(message="No apis provided for delete."), 400

        responses = operations.delete_providers_services(apis)

        return jsonify(responses), 200

    except Exception as e:
        return jsonify(message="Error deleting apis", error=str(e)), 500

@cross_origin()
@backoffice_routes.route("/user/<username>/<password>", methods=["DELETE"])
@jwt_required()
def delete_user(username, password):
    if username == "null" or password == "null":
        return jsonify(message="Invalid parameters", object=None), 400
    return operations.delete_user(username, password)

@backoffice_routes.route("/users10", methods=["DELETE"])
@jwt_required()
def delete_users_route():
    try:
        users = request.json.get('users', [])

        if not users:
            return jsonify(message="No users provided for delete."), 400

        responses = operations.delete_users(users)

        return jsonify(responses), 200

    except Exception as e:
        return jsonify(message="Error deleting users", error=str(e)), 500
    
@backoffice_routes.route("/user", methods=["POST"])
@jwt_required()
def create_user_route():
    try:
        user_data = request.json

        # Verificar que los datos necesarios están presentes
        if not all(key in user_data for key in ['username', 'password', 'cn', 'role', 'description']):
            return jsonify(message="Missing data for user creation."), 400

        response = operations.create_user(user_data)

        return jsonify(response), 201


    except Exception as e:
        return jsonify(message="Error creating user", error=str(e)), 500

@cross_origin()
@backoffice_routes.route("/apis", methods=["GET"])
@jwt_required()
def get_apis():
    return operations.get_apis()

@cross_origin()
@backoffice_routes.route("/apisPages", methods=["GET"])
@jwt_required()
def get_apis_pages():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.get_apis_pages(page, page_size)

@cross_origin()
@backoffice_routes.route("/apisPagesOrder", methods=["GET"])
@jwt_required()
def get_apis_pages_order():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    order = request.args.get('order', default="ascending", type=str)
    return operations.get_apis_pages_order(page, page_size, order)

@cross_origin()
@backoffice_routes.route("/apis/num", methods=["GET"])
@jwt_required()
def get_num_apis():    
    return operations.get_num_apis()

@cross_origin()
@backoffice_routes.route("/apis/search", methods=["GET"])
@jwt_required()
def search_apis():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_apis(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500


@cross_origin()
@backoffice_routes.route('/grafana', methods=['GET'])
@jwt_required()
+107 −0
Original line number Diff line number Diff line
#!/usr/bin/env python3

from flask import Blueprint, jsonify
from ..core.operations import Operations
from flask_jwt_extended import jwt_required, get_jwt_identity
from flask_cors import cross_origin
import requests
from flask import request


# create blueprint backoffice_routes
invokers_routes = Blueprint("invokers_routes", __name__)
operations = Operations()   # create operations object -> operations.py


# GET invokers with date order and pagination
@cross_origin()
@invokers_routes.route("/", methods=["GET"])
@jwt_required()
def get_invokers_pages_order():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    order = request.args.get('order', default="ascending", type=str)
    return operations.get_invokers_pages_order(page, page_size, order)

# GET a JSON with all invokers
@cross_origin()
@invokers_routes.route("/invokersTotal", methods=["GET"])
@jwt_required()
def get_invokers():
    return operations.get_invokers()

# GET invokers with pagination
@cross_origin()
@invokers_routes.route("/pages", methods=["GET"])
@jwt_required()
def get_invokersPages():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.get_invokersPages(page, page_size)

# DELETE a security context of an invoker
@cross_origin()
@invokers_routes.route("/security/<invoker_id>/<aef_id>/<api_id>", methods=["DELETE"])
@jwt_required()
def delete_security_context(invoker_id, aef_id, api_id):
    if invoker_id == "null" or aef_id == "null" or api_id == "null":
        return jsonify(message="Invalid parameters", object=None), 400
    return operations.delete_security_context(invoker_id, aef_id, api_id)

# SEARCH invokers
@cross_origin()
@invokers_routes.route("/search", methods=["GET"])
@jwt_required()
def search_invokers():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_invokers(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500

# GET the number of invokers
@cross_origin()
@invokers_routes.route("/numInvokers", methods=["GET"])
@jwt_required()
def get_num_ixnvokers():
    return operations.get_num_invokers()

# GET security context of an invoker -> single page invoker information
@cross_origin()
@invokers_routes.route("/security/<invoker_id>", methods=["GET"])
@jwt_required()
def get_invoker_security_context(invoker_id):
    if invoker_id == "null":
        return jsonify(message="Invalid invoker_id", security_contexts=None), 400
    return operations.get_invoker_security_context(invoker_id)

# DELETE a single invoker
@cross_origin()
@invokers_routes.route("/<id>", methods=["DELETE"])
@jwt_required()
def delete_invoker(id):
    if id == "null":
        return jsonify(message="Invalid id", object=None), 400
    return operations.delete_invoker(id)

# DELETE multiple invokers
@invokers_routes.route("/", methods=["DELETE"])
@jwt_required()
def delete_invokers_route():
    try:
        invoker_ids = request.json.get('invoker_ids', [])

        if not invoker_ids:
            return jsonify(message="No invoker IDs provided"), 400

        responses = operations.delete_invokers(invoker_ids)

        return jsonify(responses), 200

    except Exception as e:
        return jsonify(message="Error deleting invokers", error=str(e)), 500
 No newline at end of file
+106 −0
Original line number Diff line number Diff line
#!/usr/bin/env python3

from flask import Blueprint, jsonify
from ..core.operations import Operations
from flask_jwt_extended import jwt_required, get_jwt_identity
from flask_cors import cross_origin
import requests
from flask import request


# create blueprint backoffice_routes
providers_routes = Blueprint("providers_routes", __name__)
operations = Operations()   # create operations object -> operations.py


# GET providers with date order and pagination
@cross_origin()
@providers_routes.route("/", methods=["GET"])
@jwt_required()
def get_providers_pages_order():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    order = request.args.get('order', default="ascending", type=str)
    return operations.get_providers_pages_order(page, page_size, order)

# GET a JSON with all providers
@cross_origin()
@providers_routes.route("/providersTotal", methods=["GET"])
@jwt_required()
def get_providers():
    return operations.get_providers()

# GET providers with pagination
@cross_origin()
@providers_routes.route("/pages", methods=["GET"])
def get_providersPages():
    page = request.args.get('page', default=1, type=int)
    page_size = request.args.get('pageSize', default=10, type=int)
    return operations.get_providers_pages(page, page_size)

# GET provider service -> single page provider information
@cross_origin()
@providers_routes.route("/services/<id>", methods=["GET"])
@jwt_required()
def get_provider_services(id):
    if id == "null":
        return jsonify(message="Invalid apf_id", object=None), 400
    return operations.get_provider_services(id)

# SEARCH providers
@cross_origin()
@providers_routes.route("/search", methods=["GET"])
@jwt_required()
def search_providers():
    try:
        search_term = request.args.get('searchTerm', default='', type=str)
        page = request.args.get('page', default=1, type=int)
        page_size = request.args.get('pageSize', default=10, type=int)

        response, status_code = operations.search_providers(search_term, page, page_size)

        return jsonify(response), status_code
    except Exception as e:
        return jsonify({"error": str(e)}), 500

# GET the number of providers
@cross_origin()
@providers_routes.route("/numProviders", methods=["GET"])
@jwt_required()
def get_num_providers():
    return operations.get_num_providers()

# DELETE a single provider
@cross_origin()
@providers_routes.route("/<id>", methods=["DELETE"])
@jwt_required()
def delete_provider(id):
    if id == "null":
        return jsonify(message="Invalid id", object=None), 400
    return operations.delete_provider(id)

# DELETE multiple providers
@providers_routes.route("/", methods=["DELETE"])
@jwt_required()
def delete_providers_route():
    try:
        provider_ids = request.json.get('provider_ids', [])

        if not provider_ids:
            return jsonify(message="No provider IDs provided"), 400

        responses = operations.delete_providers(provider_ids)

        return jsonify(responses), 200

    except Exception as e:
        return jsonify(message="Error deleting providers", error=str(e)), 500
    
# DELETE a service from a provider
@cross_origin()
@providers_routes.route("/services/<apf_id>/<api_id>", methods=["DELETE"])
@jwt_required()
def delete_provider_service(apf_id, api_id):
    if apf_id == "null" or api_id == "null":
        return jsonify(message="Invalid parameters", object=None), 400
    return operations.delete_provider_service(apf_id, api_id)
 No newline at end of file
Loading