Fix TUS upload url generation (#173)

This commit is contained in:
Hakan Shehu
2025-08-02 10:59:47 +02:00
committed by GitHub
parent fefcd29664
commit 7a2781fa51
3 changed files with 23 additions and 12 deletions

View File

@@ -15,6 +15,7 @@ import { redis } from '@colanode/server/data/redis';
import { s3Config } from '@colanode/server/data/storage';
import { config } from '@colanode/server/lib/config';
import { fetchCounter } from '@colanode/server/lib/counters';
import { generateUrl } from '@colanode/server/lib/fastify';
import { buildFilePath, deleteFile } from '@colanode/server/lib/files';
import { mapNode, updateNode } from '@colanode/server/lib/nodes';
import { RedisKvStore } from '@colanode/server/lib/tus/redis-kv';
@@ -94,6 +95,10 @@ export const fileUploadTusRoute: FastifyPluginCallbackZod = (
}
const path = buildFilePath(workspaceId, fileId, file.attributes);
const url = generateUrl(
request,
`/client/v1/workspaces/${workspaceId}/files/${fileId}/tus`
);
const tusServer = new Server({
path: '/tus',
@@ -284,8 +289,8 @@ export const fileUploadTusRoute: FastifyPluginCallbackZod = (
body: JSON.stringify({ uploadId }),
};
},
generateUrl(_req, options) {
return `${options.proto}://${options.host}/client/v1/workspaces/${workspaceId}/files/${fileId}/tus`;
generateUrl() {
return url;
},
getFileIdFromRequest() {
return path;

View File

@@ -1,6 +1,7 @@
import { FastifyPluginCallback } from 'fastify';
import { config } from '@colanode/server/lib/config';
import { generateUrl } from '@colanode/server/lib/fastify';
import { homeTemplate } from '@colanode/server/templates';
export const homeRoute: FastifyPluginCallback = (instance, _, done) => {
@@ -8,16 +9,7 @@ export const homeRoute: FastifyPluginCallback = (instance, _, done) => {
method: 'GET',
url: '/',
handler: async (request, reply) => {
const port =
request.port && request.port != 80 && request.port != 443
? `:${request.port}`
: '';
const prefix = config.server.pathPrefix
? `/${config.server.pathPrefix}`
: '';
const configUrl = `${request.protocol}://${request.hostname}${port}${prefix}/config`;
const configUrl = generateUrl(request, '/config');
const template = homeTemplate({
name: config.server.name,

View File

@@ -0,0 +1,14 @@
import { FastifyRequest } from 'fastify';
import { config } from './config';
export const generateUrl = (request: FastifyRequest, path: string) => {
const port =
request.port && request.port != 80 && request.port != 443
? `:${request.port}`
: '';
const prefix = config.server.pathPrefix ? `/${config.server.pathPrefix}` : '';
return `${request.protocol}://${request.hostname}${port}${prefix}${path}`;
};