5
5
const fileType = require ( 'file-type' )
6
6
const mimeTypes = require ( 'mime-types' )
7
7
const stream = require ( 'stream' )
8
- const nodeToWebStream = require ( 'readable- stream-node- to-web ' )
8
+ const toBlob = require ( 'stream-to-blob ' )
9
9
10
10
const resolver = require ( './resolver' )
11
11
const pathUtils = require ( './utils/path' )
@@ -68,7 +68,7 @@ const response = (ipfsNode, ipfsPath) => {
68
68
69
69
readableStream . once ( 'error' , ( error ) => {
70
70
if ( error ) {
71
- resolve ( new Response ( error . toString ( ) , header ( 500 , 'Service Worker Error ' ) ) )
71
+ resolve ( new Response ( error . toString ( ) , header ( 500 , 'Error fetching the file ' ) ) )
72
72
}
73
73
} )
74
74
@@ -79,19 +79,30 @@ const response = (ipfsNode, ipfsPath) => {
79
79
if ( filetypeChecked ) {
80
80
return
81
81
}
82
+
82
83
filetypeChecked = true
83
84
// return Response with mime type
84
85
const fileSignature = fileType ( chunk )
85
86
const mimeType = mimeTypes . lookup ( fileSignature ? fileSignature . ext : null )
86
87
87
- if ( mimeType ) {
88
- resolve (
89
- new Response ( typeof ReadableStream === 'function' ? nodeToWebStream ( responseStream ) : responseStream ,
90
- header ( 200 , 'OK' , { 'Content-Type' : mimeTypes . contentType ( mimeType ) } ) )
91
- )
88
+ if ( typeof Blob === 'undefined' ) {
89
+ if ( mimeType ) {
90
+ resolve ( new Response ( responseStream , header ( 200 , 'OK' , { 'Content-Type' : mimeTypes . contentType ( mimeType ) } ) ) )
91
+ } else {
92
+ resolve ( new Response ( responseStream , header ( ) ) )
93
+ }
92
94
} else {
93
- resolve ( new Response ( typeof ReadableStream === 'function' ? nodeToWebStream ( responseStream ) : responseStream ,
94
- header ( ) ) )
95
+ toBlob ( responseStream , ( err , blob ) => {
96
+ if ( err ) {
97
+ resolve ( new Response ( err . toString ( ) , header ( 500 , 'Error fetching the file' ) ) )
98
+ }
99
+
100
+ if ( mimeType ) {
101
+ resolve ( new Response ( blob , header ( 200 , 'OK' , { 'Content-Type' : mimeTypes . contentType ( mimeType ) } ) ) )
102
+ } else {
103
+ resolve ( new Response ( blob , header ( ) ) )
104
+ }
105
+ } )
95
106
}
96
107
} )
97
108
} )
0 commit comments