VoiceTranscriptFormDataParser

my first try ever parsing formdata
 avatar
unknown
plain_text
10 days ago
2.7 kB
6
Indexable
async function nft_tokens_for_owner_func(request: HttpRequest, context) {
            const body = await request.text();
            const bodyPipe = await request.body;
            // bodyPipe.releaseLock();
            const bodyJson = await request.json();
            const boundary = body.slice(0, 40);

            const random = (() => {
                const buf = Buffer.alloc(16);
                return () => randomFillSync(buf).toString('hex');
            })();
            
            function readHeader(request: HttpRequest, key: string) {
                return {[key] :Object.fromEntries(request.headers.entries())[key] + `; boundary=${boundary}`};
            }

            return new Promise((resolve, reject) => {
            
                console.log({contentType: request.headers.values});              
                console.log({new_header: readHeader(request, 'content-type')});
                
                const busboyHeader = readHeader(request, 'content-type');
                const bb = busboy({ headers: busboyHeader });
                
                const saveTo = join(process.cwd(), "./",);
                console.log({temp_directory: saveTo});
                // const saveTo = join(tmpdir(), `busboy-upload-${random()}`);
                

                bb.on('file', (fieldname, file, filename, encoding, mimetype) => {
                    const saveTo = join(process.cwd(), 'uploads', filename);
                    const writeStream = createWriteStream(saveTo);
              
                    file.pipe(writeStream);
              
                    writeStream.on('close', () => {
                      context.log(`File [${filename}] saved successfully.`);
                    });
              
                    writeStream.on('error', (err) => {
                      context.log.error(`Error writing file [${filename}]: ${err.message}`);
                    });
                  });
              
                  bb.on('finish', () => {
                    context.res = {
                      status: 200,
                      body: 'Upload complete!',
                    };
                    context.done();
                  });

                  const downloadWriteStream = createWriteStream('./');

                  const stream = new WritableStream({
                    write(bb){
                        downloadWriteStream.write(bb);
                    }
                  });

                  console.log({readableStream: bodyPipe});
                  bodyPipe.pipeTo(stream);
            })
        }

        nft_tokens_for_owner_func(request, context);
Leave a Comment