Files
nosys_libs/noSys/networksApiBlueprint.py
2026-01-31 17:52:49 +10:00

81 lines
3.2 KiB
Python

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/<path:network_id>", 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/<path:network_id>/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()