async function put()

in apps/mountebank-mock/mountebank-source/src/controllers/impostersController.js [172:210]


    async function put (request, response) {
        const requestImposters = request.body.imposters || [],
            validationPromises = requestImposters.map(imposter => validate(imposter));

        logger.debug(requestDetails(request));

        if (!('imposters' in request.body)) {
            respondWithValidationErrors(response, [
                exceptions.ValidationError("'imposters' is a required field")
            ]);
            return false;
        }

        const validations = await Promise.all(validationPromises),
            isValid = validations.every(validation => validation.isValid);

        if (!isValid) {
            const validationErrors = validations.reduce((accumulator, validation) => accumulator.concat(validation.errors), []);
            respondWithValidationErrors(response, validationErrors);
            return false;
        }

        await imposters.deleteAll();
        try {
            const creationPromises = requestImposters.map(imposter =>
                    protocols[imposter.protocol].createImposterFrom(imposter)
                ),
                allImposters = await Promise.all(creationPromises);
            await Promise.all(allImposters.map(imposters.add));

            const promises = allImposters.map(imposter => imposter.toJSON({ list: true })),
                json = await Promise.all(promises);
            response.send({ imposters: json });
        }
        catch (error) {
            respondWithCreationError(response, error);
        }
        return true;
    }