@@ -4,11 +4,16 @@ import { fileComposer } from '../../services/fileComposer.js'
44import { pipeline } from 'stream'
55import { logger } from '../../drivers/logger.js'
66import { asyncSafeHandler } from '../../utils/express.js'
7- import { getByteRange , uniqueHeaderValue } from '../../utils/http.js'
7+ import { uniqueHeaderValue } from '../../utils/http.js'
88import { HttpError } from '../middlewares/error.js'
99import { dsnFetcher } from '../../services/dsnFetcher.js'
1010import { isValidCID } from '../../utils/dagData.js'
1111import { fileCache } from '../../services/cache.js'
12+ import {
13+ DownloadMetadataFactory ,
14+ handleDownloadResponseHeaders ,
15+ getByteRange ,
16+ } from '@autonomys/file-server'
1217
1318const fileRouter = Router ( )
1419
@@ -75,47 +80,17 @@ fileRouter.get(
7580 ignoreCache,
7681 byteRange,
7782 } )
78- if ( fromCache ) {
79- res . setHeader ( 'x-file-origin' , 'cache' )
80- } else {
81- res . setHeader ( 'x-file-origin' , 'gateway' )
82- }
83-
84- if ( file . mimeType ) {
85- res . set ( 'Content-Type' , file . mimeType )
86- }
87- if ( file . filename ) {
88- res . set (
89- 'Content-Disposition' ,
90- `filename="${ encodeURIComponent ( file . filename ) } "` ,
91- )
92- }
93-
94- // Advertise range support
95- res . set ( 'Accept-Ranges' , 'bytes' )
96-
97- if ( byteRange && file . size != null ) {
98- const fileSizeNumber = Number ( file . size )
99- const startIndex = byteRange [ 0 ]
100-
101- const effectiveEnd = Math . min (
102- byteRange [ 1 ] != null ? byteRange [ 1 ] : fileSizeNumber - 1 ,
103- fileSizeNumber - 1 ,
104- )
105- const contentLength = effectiveEnd - startIndex + 1
106-
107- res . status ( 206 )
108- res . set (
109- 'Content-Range' ,
110- `bytes ${ startIndex } -${ effectiveEnd } /${ fileSizeNumber } ` ,
111- )
112- res . set ( 'Content-Length' , contentLength . toString ( ) )
113- } else if ( file . size != null ) {
114- res . set ( 'Content-Length' , file . size . toString ( ) )
115- }
116- if ( file . encoding && ! rawMode && ! byteRange ) {
117- res . set ( 'Content-Encoding' , file . encoding )
118- }
83+ res . setHeader ( 'x-file-origin' , fromCache ? 'cache' : 'gateway' )
84+
85+ handleDownloadResponseHeaders (
86+ req ,
87+ res ,
88+ DownloadMetadataFactory . fromIPLDData ( metadata ) ,
89+ {
90+ byteRange,
91+ rawMode,
92+ } ,
93+ )
11994
12095 logger . debug (
12196 `Streaming file ${ req . params . cid } to ${ req . ip } with ${ file . size } bytes` ,
0 commit comments