MCPcopy
hub / github.com/simstudioai/sim / extractUserFileTextContent

Function extractUserFileTextContent

apps/sim/app/api/tools/file/manage/route.ts:309–335  ·  view source on GitHub ↗
(
  userFile: UserFile,
  requestId: string
)

Source from the content-addressed store, hash-verified

307 * raw text; binary files yield a short placeholder rather than corrupt bytes.
308 */
309const extractUserFileTextContent = async (
310 userFile: UserFile,
311 requestId: string
312): Promise<string> => {
313 const { buffer } = await downloadServableFileFromStorage(userFile, requestId, logger, {
314 maxBytes: MAX_GET_CONTENT_FILE_BYTES,
315 })
316
317 const extension = getFileExtension(userFile.name)
318 if (extension && isSupportedFileType(extension)) {
319 try {
320 const result = await parseBuffer(buffer, extension)
321 return result.content ?? ''
322 } catch (error) {
323 logger.warn('Falling back to raw text after parser failure', {
324 name: userFile.name,
325 error: getErrorMessage(error, 'Unknown error'),
326 })
327 }
328 }
329
330 if (isLikelyTextBuffer(buffer)) {
331 return buffer.toString('utf-8')
332 }
333
334 return `[Binary file: ${userFile.name} (${userFile.type || 'application/octet-stream'}, ${buffer.length} bytes). Cannot extract text content.]`
335}
336
337export const POST = withRouteHandler(async (request: NextRequest) => {
338 const auth = await checkInternalAuth(request, { requireWorkflowId: false })

Callers 1

route.tsFile · 0.85

Calls 8

getFileExtensionFunction · 0.90
isSupportedFileTypeFunction · 0.90
parseBufferFunction · 0.90
getErrorMessageFunction · 0.90
isLikelyTextBufferFunction · 0.70
warnMethod · 0.65
toStringMethod · 0.45

Tested by

no test coverage detected