Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/swift-ears-sparkle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@rocket.chat/meteor": major
"@rocket.chat/rest-typings": major
---

Removes the deprecated `/api/v1/rooms.upload` endpoint
68 changes: 0 additions & 68 deletions apps/meteor/app/api/server/v1/rooms.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,74 +170,6 @@ API.v1.addRoute(
},
);

API.v1.addRoute(
'rooms.upload/:rid',
{
authRequired: true,
deprecation: {
version: '8.0.0',
alternatives: ['/v1/rooms.media/:rid'],
},
},
{
async post() {
if (!(await canAccessRoomIdAsync(this.urlParams.rid, this.userId))) {
return API.v1.forbidden();
}

const file = await getUploadFormData(
{
request: this.request,
},
{ field: 'file', sizeLimit: settings.get<number>('FileUpload_MaxFileSize') },
);

if (!file) {
throw new Meteor.Error('invalid-field');
}

const { fields } = file;
let { fileBuffer } = file;

const details = {
name: file.filename,
size: fileBuffer.length,
type: file.mimetype,
rid: this.urlParams.rid,
userId: this.userId,
};

const stripExif = settings.get('Message_Attachments_Strip_Exif');
if (stripExif) {
// No need to check mime. Library will ignore any files without exif/xmp tags (like BMP, ico, PDF, etc)
fileBuffer = await Media.stripExifFromBuffer(fileBuffer);
details.size = fileBuffer.length;
}

const fileStore = FileUpload.getStore('Uploads');
const uploadedFile = await fileStore.insert(details, fileBuffer);

if ((fields.description?.length ?? 0) > settings.get<number>('Message_MaxAllowedSize')) {
throw new Meteor.Error('error-message-size-exceeded');
}

uploadedFile.description = fields.description;

delete fields.description;

await applyAirGappedRestrictionsValidation(() =>
sendFileMessage(this.userId, { roomId: this.urlParams.rid, file: uploadedFile, msgData: fields }),
);

const message = await Messages.getMessageByFileIdAndUsername(uploadedFile._id, this.userId);

return API.v1.success({
message,
});
},
},
);

API.v1.addRoute(
'rooms.media/:rid',
{ authRequired: true },
Expand Down
24 changes: 19 additions & 5 deletions apps/meteor/tests/data/uploads.helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,17 +165,25 @@ export async function testFileUploads(
.end(done);
});

let fileId: string;
it('should not return thumbnails', async () => {
await request
.post(api(`rooms.upload/${testRoom._id}`))
.post(api(`rooms.media/${testRoom._id}`))
.set(credentials)
.attach('file', imgURL)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res: Response) => {
expect(res.body).to.have.property('success', true);
fileId = res.body.file._id;
});

await request
.post(api(`rooms.mediaConfirm/${testRoom._id}/${fileId}`))
.set(credentials)
.expect('Content-Type', 'application/json')
.expect(200);

await request
.get(api(filesEndpoint))
.set(credentials)
Expand All @@ -198,19 +206,25 @@ export async function testFileUploads(

it('should not return hidden files', async () => {
let msgId;
let fileId: string;

await request
.post(api(`rooms.upload/${testRoom._id}`))
.post(api(`rooms.media/${testRoom._id}`))
.set(credentials)
.attach('file', imgURL)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res: Response) => {
expect(res.body).to.have.property('success', true);

fileId = res.body.file._id;
});
await request
.post(api(`rooms.mediaConfirm/${testRoom._id}/${fileId}`))
.set(credentials)
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res: Response) => {
expect(res.body).to.have.property('success', true);
msgId = res.body.message._id;
fileId = res.body.message.file._id;
});

await request
Expand Down
12 changes: 0 additions & 12 deletions apps/meteor/tests/end-to-end/api/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import type { Response } from 'supertest';

import { getCredentials, api, request, credentials, apiUrl } from '../../data/api-data';
import { followMessage, sendSimpleMessage, deleteMessage } from '../../data/chat.helper';
import { imgURL } from '../../data/interactions';
import { updatePermission, updateSetting } from '../../data/permissions.helper';
import { addUserToRoom, createRoom, deleteRoom, getSubscriptionByRoomId } from '../../data/rooms.helper';
import { password } from '../../data/user';
Expand Down Expand Up @@ -1423,17 +1422,6 @@ describe('[Chat]', () => {
.expect(statusCode)
.expect(testCb);

await (
customFields
? request.post(api(`rooms.upload/${testChannel._id}`)).field('customFields', JSON.stringify(customFields))
: request.post(api(`rooms.upload/${testChannel._id}`))
)
.set(credentials)
.attach('file', imgURL)
.expect('Content-Type', 'application/json')
.expect(statusCode)
.expect(testCb);

await request
.post(api('chat.postMessage'))
.set(credentials)
Expand Down
Loading
Loading