@@ -7,6 +7,13 @@ import FormData from 'form-data';
77export class HttpService {
88 constructor ( private readonly httpService : NestHttpService ) { }
99
10+ private base64ToBuffer ( base64 : string ) : { buffer : Buffer ; mime : string } {
11+ const arr = base64 . split ( ',' ) ;
12+ const mime = arr [ 0 ] . match ( / : ( .* ?) ; / ) ?. [ 1 ] ;
13+ const bstr = Buffer . from ( arr [ 1 ] , 'base64' ) ;
14+ return { buffer : bstr , mime } ;
15+ }
16+
1017 async makeHttpRequest ( {
1118 url,
1219 method,
@@ -64,9 +71,7 @@ export class HttpService {
6471 // Filter and transform the body into key-value pairs
6572 const formBody : Record < string , string > = { } ;
6673 formParsedBody . forEach ( ( item : any ) => {
67- if ( item . checked === true ) {
6874 formBody [ item . key ] = item . value ;
69- }
7075 } ) ;
7176
7277 const formUrlEncoded = new URLSearchParams ( formBody ) ;
@@ -80,13 +85,18 @@ export class HttpService {
8085 const parsedBody =
8186 typeof body === 'string' ? JSON . parse ( body ) : body ;
8287 if ( Array . isArray ( parsedBody ) ) {
83- parsedBody . forEach ( ( item : any ) => {
84- if ( item . base ) {
85- formData . append ( item . key , fs . createReadStream ( item . base ) ) ;
86- } else {
87- formData . append ( item . key , item . value ) ;
88+ for ( const field of parsedBody || [ ] ) {
89+ try {
90+ if ( field ?. base ) {
91+ const { buffer, mime } = this . base64ToBuffer ( field . base ) ;
92+ formData . append ( field . key , buffer , { filename : field . value , contentType : mime } ) ;
93+ } else {
94+ formData . append ( field . key , field . value ) ;
95+ }
96+ } catch ( e ) {
97+ formData . append ( field . key , field . value ) ;
8898 }
89- } ) ;
99+ }
90100 }
91101
92102 config . data = formData ;
@@ -111,7 +121,7 @@ export class HttpService {
111121
112122 // Add custom user agent
113123 config . headers [ 'User-Agent' ] = 'SparrowRuntime/1.0.0' ;
114-
124+
115125 try {
116126 const response = await this . httpService . axiosRef ( {
117127 url : config . url ,
0 commit comments