11import { getFileStreamAndMetadata } from "@pipedream/platform" ;
22
33export const isValidUrl = ( urlString ) => {
4- var urlPattern = new RegExp ( "^(https?:\\/\\/)?" + // validate protocol
5- "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // validate domain name
6- "((\\d{1,3}\\.){3}\\d{1,3}))" + // validate OR ip (v4) address
7- "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // validate port and path
8- "(\\?[;&a-z\\d%_.~+=-]*)?" + // validate query string
9- "(\\#[-a-z\\d_]*)?$" , "i" ) ; // validate fragment locator
4+ var urlPattern = new RegExp (
5+ "^(https?:\\/\\/)?" + // validate protocol
6+ "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // validate domain name
7+ "((\\d{1,3}\\.){3}\\d{1,3}))" + // validate OR ip (v4) address
8+ "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // validate port and path
9+ "(\\?[;&a-z\\d%_.~+=-]*)?" + // validate query string
10+ "(\\#[-a-z\\d_]*)?$" ,
11+ "i" ,
12+ ) ; // validate fragment locator
1013 return ! ! urlPattern . test ( urlString ) ;
1114} ;
1215
@@ -19,10 +22,14 @@ export const checkTmp = (filename) => {
1922
2023export const getUrlOrFile = async ( url ) => {
2124 const {
22- stream, metadata : { contentType } ,
25+ stream,
26+ metadata : { contentType } ,
2327 } = await getFileStreamAndMetadata ( url ) ;
24- const base64Image = Buffer . from ( stream , "binary" ) . toString ( "base64" ) ;
25- return {
26- file : `data:${ contentType } ;base64,${ base64Image } ` ,
27- } ;
28+ const chunks = [ ] ;
29+ for await ( const chunk of stream ) {
30+ chunks . push ( chunk ) ;
31+ }
32+ const buffer = Buffer . concat ( chunks ) ;
33+ const base64Image = buffer . toString ( "base64" ) ;
34+ return `data:${ contentType } ;base64,${ base64Image } ` ;
2835} ;
0 commit comments