UNPKG

@shapediver/sdk.geometry-api-sdk-v2

Version:
93 lines 3.88 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sleep = sleep; exports.extractFileInfo = extractFileInfo; exports.contentDispositionFromFilename = contentDispositionFromFilename; exports.filenameFromContentDisposition = filenameFromContentDisposition; exports.exists = exists; exports.processError = processError; const error_1 = require("./error"); function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } function extractFileInfo(headers) { if (!headers) return { size: undefined, filename: undefined }; const contentLength = headers['Content-Length'] || headers['content-length']; const size = contentLength ? parseInt(contentLength) : undefined; const contentDisposition = headers['Content-Disposition'] || headers['content-disposition']; const filename = contentDisposition ? filenameFromContentDisposition(contentDisposition) : undefined; return { size, filename }; } function contentDispositionFromFilename(filename) { const asciiName = filename.normalize('NFKD').replace(/[^\x00-\x7F]/g, ''); let header = `attachment; filename="${asciiName}"`; if (asciiName !== filename) { const quotedName = encodeURIComponent(filename); header += `; filename*=UTF-8''${quotedName}`; } return header; } function filenameFromContentDisposition(contentDisposition) { let filename; let filenameStar; const filenameMatch = contentDisposition.match(/filename="([^"]+)"/); if (filenameMatch) filename = filenameMatch[1]; const filenameStarMatch = contentDisposition.match(/filename\*=([^'']+''|)?(.+)/); if (filenameStarMatch) { const encoding = filenameStarMatch[1] ? filenameStarMatch[1] : 'utf-8'; const encodedFilename = filenameStarMatch[2]; if (encoding.toLowerCase().startsWith('utf-8')) filenameStar = decodeURIComponent(encodedFilename); } return filenameStar || filename; } function exists(apiCall) { return __awaiter(this, void 0, void 0, function* () { return apiCall() .then(() => true) .catch((error) => { var _a; if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404) return false; throw error; }); }); } function processError(error) { if ('response' in error) { const err = error, status = err.response.status, data = err.response.data; if (data && typeof data === 'object' && 'desc' in data && typeof data.desc === 'string' && 'error' in data && typeof data.error === 'string' && 'message' in data && typeof data.message === 'string') { return new error_1.ResponseError(status, data.message, data.desc, data.error); } else { return new error_1.ResponseError(status, err.message, 'No error description provided'); } } else if ('request' in error) { return new error_1.RequestError(error.message); } else { return error; } } //# sourceMappingURL=utils.js.map