Source: RouterTailnet/tailnet/controller.js

// @ts-check
/**
 * @import {ExpressRequestAuthorized, ExpressResponse} from '../../types.js'
 */

import { sendOk, sendErrorFrom } from '../../utils/apiEnvelope.js';
import * as service from './service.js';

/**
 * GET /api/tailnets
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const listTailnets = async (req, res) => {
    try {
        sendOk(res, await service.listTailnets(req));
    } catch (e) {
        sendErrorFrom(res, e);
    }
};

/**
 * PUT /api/tailnets/:group
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const putTailnet = async (req, res) => {
    try {
        const result = await service.createTailnet(req, req.body);
        sendOk(res, result.result);
    } catch (e) {
        sendErrorFrom(res, e);
    }
};

/**
 * GET /api/tailnets/:UID
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const getTailnet = async (req, res) => {
    try {
        const result = await service.getTailnet(req, req.params.UID);
        sendOk(res, result.result);
    } catch (e) {
        sendErrorFrom(res, e);
    }
};

/**
 * POST /api/tailnets/:UID
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const updateTailnet = async (req, res) => {
    try {
        const result = await service.updateTailnet(req, req.params.UID, req.body);
        sendOk(res, result.result);
    } catch (e) {
        sendErrorFrom(res, e);
    }
};

/**
 * DELETE /api/tailnets/:UID
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const deleteTailnet = async (req, res) => {
    try {
        const result = await service.deleteTailnet(req, req.params.UID);
        sendOk(res, result.result);
    } catch (e) {
        sendErrorFrom(res, e);
    }
};

/**
 * GET /api/tailnets/:UID/runners
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const listTailnetRunners = async (req, res) => {
    try {
        sendOk(res, await service.listTailnetRunners(req, req.params.UID));
    } catch (e) {
        sendErrorFrom(res, e);
    }
};

/**
 * PUT /api/tailnets/:UID/runners/:runnerUID
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const addTailnetRunner = async (req, res) => {
    try {
        const result = await service.addTailnetRunner(req, req.params.UID, req.params.runnerUID);
        sendOk(res, result.result);
    } catch (e) {
        sendErrorFrom(res, e);
    }
};

/**
 * DELETE /api/tailnets/:UID/runners/:runnerUID
 * @param {ExpressRequestAuthorized} req
 * @param {ExpressResponse} res
 */
export const removeTailnetRunner = async (req, res) => {
    try {
        const result = await service.removeTailnetRunner(req, req.params.UID, req.params.runnerUID);
        sendOk(res, result.result);
    } catch (e) {
        sendErrorFrom(res, e);
    }
};