MCPcopy Create free account
hub / github.com/deta/surf / fetchResourceFile

Function fetchResourceFile

app/src/main/surfProtocolHandlers.ts:415–463  ·  view source on GitHub ↗
(resourceId: string, resource?: SFFSResource)

Source from the content-addressed store, hash-verified

413}
414
415const fetchResourceFile = async (resourceId: string, resource?: SFFSResource) => {
416 const base = join(app.getPath('userData'), 'sffs_backend', 'resources')
417 const filePath = join(base, resourceId)
418
419 try {
420 let extension = ''
421 let newFileName = resourceId
422 if (resource) {
423 extension = getResourceFileExtension(resource.type)
424 newFileName = getResourceFileName(SFFSMain.convertResourceToCompositeResource(resource))
425 }
426
427 // try stored resource path first
428 if (
429 resource &&
430 resource.path &&
431 (resource.path.endsWith(`.${extension}`) || resource.path.endsWith('.json'))
432 ) {
433 const result = await fetchFilePath(base, resource.path)
434 if (result) {
435 return result
436 }
437 }
438
439 // then try the new path (with new file name and extension)
440 let newFilePath = join(base, extension ? `${newFileName}.${extension}` : resourceId)
441 let result = await fetchFilePath(base, newFilePath)
442 if (result) {
443 if (resource?.path !== newFilePath) {
444 await migrateResourceFile(newFilePath, newFilePath, resource)
445 }
446
447 return result
448 }
449
450 // try legacy path with only resourceId
451 const legacyFilePath = join(base, resourceId)
452 result = await fetchFilePath(base, legacyFilePath)
453 if (result) {
454 await migrateResourceFile(legacyFilePath, newFilePath, resource)
455 return result
456 }
457
458 return { response: new Response('Not Found', { status: 404 }), filePath, base }
459 } catch (error) {
460 log.error('Error fetching resource file:', error)
461 return { response: new Response('Not Found', { status: 404 }), filePath, base }
462 }
463}
464
465const handleSurfResourceDataRequest = async (req: GlobalRequest, resourceId: string) => {
466 const sffs = useSFFSMain()

Callers 2

surfletProtocolHandlerFunction · 0.85

Calls 6

getResourceFileExtensionFunction · 0.90
getResourceFileNameFunction · 0.90
fetchFilePathFunction · 0.85
migrateResourceFileFunction · 0.85
errorMethod · 0.45

Tested by

no test coverage detected