RocketChat/Rocket.Chat

View on GitHub
apps/meteor/app/federation/server/endpoints/uploads.js

Summary

Maintainability
A
0 mins
Test Coverage
import { Uploads } from '@rocket.chat/models';

import { API } from '../../../api/server';
import { FileUpload } from '../../../file-upload/server';
import { isFederationEnabled } from '../lib/isFederationEnabled';

API.v1.addRoute(
    'federation.uploads',
    { authRequired: false },
    {
        async get() {
            if (!isFederationEnabled()) {
                return API.v1.failure('Federation not enabled');
            }

            const { upload_id } = this.queryParams;

            const upload = await Uploads.findOneById(upload_id);

            if (!upload) {
                return API.v1.failure('There is no such file in this server');
            }

            const buffer = await FileUpload.getBuffer(upload);

            return API.v1.success({ upload, buffer });
        },
    },
);