aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/request-image-size.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2024-09-02 09:26:37 -0400
committerbobzel <zzzman@gmail.com>2024-09-02 09:26:37 -0400
commitcda69e48361fce8d71a4dc66edd9dd976a27f52d (patch)
tree82b9a1a5967ae88a9534f89f7eaed3aeb289652f /src/client/util/request-image-size.ts
parentc01828308714874589d1f60c33ca59df4c656c0c (diff)
parenta958577d4c27b276aa37484e3f895e196138b17c (diff)
Merge branch 'master' into alyssa-starter
Diffstat (limited to 'src/client/util/request-image-size.ts')
-rw-r--r--src/client/util/request-image-size.ts45
1 files changed, 16 insertions, 29 deletions
diff --git a/src/client/util/request-image-size.ts b/src/client/util/request-image-size.ts
index 48cb6e3a5..c619192ed 100644
--- a/src/client/util/request-image-size.ts
+++ b/src/client/util/request-image-size.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-var-requires */
/**
* request-image-size: Detect image dimensions via request.
* Licensed under the MIT license.
@@ -9,43 +10,36 @@
* https://github.com/jo/http-image-size
*/
-const request = require('request');
-const imageSize = require('image-size');
+// const imageSize = require('image-size');
const HttpError = require('standard-http-error');
+import * as request from 'request';
+import { imageSize } from 'image-size';
+import { ISizeCalculationResult } from 'image-size/dist/types/interface';
-module.exports = function requestImageSize(options: any) {
- let opts: any = {
- encoding: null,
- };
-
- if (options && typeof options === 'object') {
- opts = Object.assign(options, opts);
- } else if (options && typeof options === 'string') {
- opts = {
- uri: options,
- ...opts,
- };
- } else {
+module.exports = function requestImageSize(url: string) {
+ if (!url) {
return Promise.reject(new Error('You should provide an URI string or a "request" options object.'));
}
- opts.encoding = null;
-
return new Promise((resolve, reject) => {
- const req = request(opts);
+ const req = request(url);
- req.on('response', (res: any) => {
+ req.on('response', res => {
if (res.statusCode >= 400) {
reject(new HttpError(res.statusCode, res.statusMessage));
return;
}
let buffer = Buffer.from([]);
- let size: any;
+ let size: ISizeCalculationResult;
- res.on('data', (chunk: any) => {
+ res.on('data', chunk => {
buffer = Buffer.concat([buffer, chunk]);
+ });
+ res.on('error', reject);
+
+ res.on('end', () => {
try {
size = imageSize(buffer);
if (size) {
@@ -54,19 +48,12 @@ module.exports = function requestImageSize(options: any) {
}
} catch (err) {
/* empty */
- console.log("Error: ", err)
+ console.log('Error: ', err);
}
- });
-
- res.on('error', reject);
-
- res.on('end', () => {
if (!size) {
reject(new Error('Image has no size'));
return;
}
-
- size.downloaded = buffer.length;
resolve(size);
});
});