UNPKG

exifr

Version:

📷 The fastest and most versatile JavaScript EXIF reading library.

45 lines (38 loc) • 1.18 kB
import dynamicImport from '../util/import.mjs' import global from './global.mjs' import {set as setFetch} from './fetch.mjs' if (!global.fetch) { function concatBuffers(buffers) { if (buffers.length > 1) return Buffer.concat(buffers) else return buffers[0] } const httpPromise = dynamicImport('http', http => http) const httpsPromise = dynamicImport('https', https => https) setFetch(function(url, {headers} = {}) { let {port, hostname, pathname, protocol, search} = new URL(url) const options = { method: 'GET', hostname, path: encodeURI(pathname) + search, headers } if (port !== '') options.port = Number(port) return new Promise(async (resolve, reject) => { let lib = protocol === 'https:' ? await httpsPromise : await httpPromise const req = lib.request(options, res => { resolve({ status: res.statusCode, arrayBuffer: () => new Promise(resolveAb => { let buffers = [] res.on('data', buffer => buffers.push(buffer)) res.on('end', () => resolveAb(concatBuffers(buffers))) }) }) }) req.on('error', reject) req.end() }) }) }