from flask import Blueprint, make_response, request, jsonify, abort from flask_socketio import SocketIO, emit, join_room, leave_room import os, signal, json, time import logging from threading import Thread from libs.api.apiBlueprint import ApiBlueprint class Blueprint(ApiBlueprint): def routes(self): from .networks import Networks self.module:Networks = self.module @self.blueprint.route('/') def show(): return self.module.name @self.blueprint.route('/networks', methods=["GET", "POST"]) def networks(): if request.method == "GET": networks = [] for network_id, state in self.module.network_states.items(): obj = {"data":self.module.nosys_core.data.get_network(network_id), "state":state} networks.append(obj) return jsonify(networks) elif request.method == "POST": content:dict = request.json name = content["name"] description = content["description"] type = content["type"] modules = content["modules"] network = self.module.create_network(name, description, type, modules) return jsonify({"network_id":network.get("id")}) @self.blueprint.route("/networks/", methods=["GET", "PUT", "DELETE"]) def network(network_id): state = self.module.network_states.get(network_id) if request.method == "GET": return jsonify(state) elif request.method == "PUT": # TODO Edit network config return jsonify({"networkId":network_id}) elif request.method == "DELETE": content:dict = request.json user_id = content["user_id"] self.module.user_remove_network(user_id, network_id) return jsonify({"networkId":network_id}) @self.blueprint.route("/networks//rendezvous", methods=["GET", "POST", "DELETE"]) def network_rendezvous(network_id): if request.method == "GET": network_rendezvous = self.module.nosys_core.data.get_network(network_id)["rendezvous"] return jsonify(network_rendezvous) elif request.method == "POST": content:dict = request.json rendezvous_id = content["rendezvous_id"] self.module.nosys_core.data.network_assign_rendezvous(network_id, rendezvous_id) return jsonify() # Rendezvous @self.blueprint.route('/rendezvous', methods=["GET", "POST"]) def rendezvous(): if request.method == "GET": return jsonify(self.module.nosys_core.data.list_rendezvous()) elif request.method == "POST": content:dict = request.json id = content["id"] address = content["address"] self.module.nosys_core.data.add_rendezvous(id, address) return jsonify()