MCPcopy
hub / github.com/simstudioai/sim / bufferFromImageUrl

Function bufferFromImageUrl

apps/sim/app/api/tools/image/route.ts:485–520  ·  view source on GitHub ↗
(url: string)

Source from the content-addressed store, hash-verified

483}
484
485async function bufferFromImageUrl(url: string): Promise<{ buffer: Buffer; contentType: string }> {
486 if (url.startsWith('data:')) {
487 const match = /^data:([^;]+);base64,(.+)$/u.exec(url)
488 if (!match) throw new Error('Invalid data URI image response')
489 const buffer = Buffer.from(match[2], 'base64')
490 assertKnownSizeWithinLimit(buffer.length, MAX_IMAGE_BYTES, 'inline image response')
491 return {
492 contentType: match[1],
493 buffer,
494 }
495 }
496
497 const urlValidation = await validateUrlWithDNS(url, 'imageUrl')
498 if (!urlValidation.isValid || !urlValidation.resolvedIP) {
499 throw new Error(urlValidation.error || 'Generated image URL failed validation')
500 }
501
502 const imageResponse = await secureFetchWithPinnedIP(url, urlValidation.resolvedIP, {
503 method: 'GET',
504 maxResponseBytes: MAX_IMAGE_BYTES,
505 })
506 if (!imageResponse.ok) {
507 await readResponseTextWithLimit(imageResponse, {
508 maxBytes: DEFAULT_MAX_ERROR_BODY_BYTES,
509 label: 'generated image error response',
510 }).catch(() => '')
511 throw new Error(`Failed to download generated image: ${imageResponse.status}`)
512 }
513
514 const contentType = imageResponse.headers.get('content-type') || 'image/png'
515 const buffer = await readResponseToBufferWithLimit(imageResponse, {
516 maxBytes: MAX_IMAGE_BYTES,
517 label: 'generated image download',
518 })
519 return { buffer, contentType }
520}
521
522async function generateWithOpenAI(
523 apiKey: string,

Callers 2

generateWithOpenAIFunction · 0.85
generateWithFalAIFunction · 0.85

Calls 6

validateUrlWithDNSFunction · 0.90
secureFetchWithPinnedIPFunction · 0.90
getMethod · 0.65

Tested by

no test coverage detected