ソースを参照

removed obsolete abstraction

Former-commit-id: 257ecfca94116c4a3c17e8027e052fcc2080aad6
Gildas 6 年 前
コミット
1f6d12bc62
1 ファイル変更16 行追加39 行削除
  1. 16 39
      lib/single-file/single-file-util.js

+ 16 - 39
lib/single-file/single-file-util.js

@@ -189,17 +189,19 @@ this.singlefile.lib.util = this.singlefile.lib.util || (() => {
 
 			async function getContent(resourceURL, options) {
 				let response, startTime;
+				const fetchResource = utilOptions.fetch;
 				if (DEBUG) {
 					startTime = Date.now();
 					log("  // STARTED download url =", resourceURL, "asBinary =", options.asBinary);
 				}
 				try {
-					response = await getResponse(resourceURL, utilOptions.fetch);
+					response = await fetchResource(resourceURL);
 				} catch (error) {
 					return { data: options.asBinary ? "data:base64," : "", resourceURL };
 				}
-				resourceURL = response.getUrl();
-				let contentType = response.getContentType();
+				const buffer = await response.arrayBuffer();
+				resourceURL = response.url || resourceURL;
+				let contentType = response.headers.get("content-type");
 				let charset;
 				if (contentType) {
 					const matchContentType = contentType.toLowerCase().split(";");
@@ -223,17 +225,22 @@ this.singlefile.lib.util = this.singlefile.lib.util || (() => {
 						if (DEBUG) {
 							log("  // ENDED   download url =", resourceURL, "delay =", Date.now() - startTime);
 						}
-						if (options.maxResourceSizeEnabled && response.getSize() > options.maxResourceSize * ONE_MB) {
+						if (options.maxResourceSizeEnabled && buffer.byteLength > options.maxResourceSize * ONE_MB) {
 							return { data: "data:base64,", resourceURL };
 						} else {
-							const dataUri = await response.getDataUri(contentType);
+							const reader = new FileReader();
+							reader.readAsDataURL(new Blob([buffer], { type: contentType || this.getContentType() }));
+							const dataUri = await new Promise((resolve, reject) => {
+								reader.addEventListener("load", () => resolve(reader.result), false);
+								reader.addEventListener("error", reject, false);
+							});
 							return { data: dataUri, resourceURL };
 						}
 					} catch (error) {
 						return { data: "data:base64,", resourceURL };
 					}
 				} else {
-					if (response.getStatusCode() >= 400 || (options.validateTextContentType && contentType && !contentType.startsWith(PREFIX_CONTENT_TYPE_TEXT))) {
+					if (response.status >= 400 || (options.validateTextContentType && contentType && !contentType.startsWith(PREFIX_CONTENT_TYPE_TEXT))) {
 						return { data: "", resourceURL };
 					}
 					if (!charset) {
@@ -242,15 +249,15 @@ this.singlefile.lib.util = this.singlefile.lib.util || (() => {
 					if (DEBUG) {
 						log("  // ENDED   download url =", resourceURL, "delay =", Date.now() - startTime);
 					}
-					if (options.maxResourceSizeEnabled && response.getSize() > options.maxResourceSize * ONE_MB) {
+					if (options.maxResourceSizeEnabled && buffer.byteLength > options.maxResourceSize * ONE_MB) {
 						return { data: "", resourceURL, charset };
 					} else {
 						try {
-							return { data: response.getText(charset), resourceURL, charset };
+							return { data: new TextDecoder(charset).decode(buffer), resourceURL, charset };
 						} catch (error) {
 							try {
 								charset = "utf-8";
-								return { data: response.getText(charset), resourceURL, charset };
+								return { data: new TextDecoder(charset).decode(buffer), resourceURL, charset };
 							} catch (error) {
 								return { data: "", resourceURL, charset };
 							}
@@ -261,36 +268,6 @@ this.singlefile.lib.util = this.singlefile.lib.util || (() => {
 		}
 	};
 
-	async function getResponse(resourceURL, fetchResource) {
-		const response = await fetchResource(resourceURL);
-		const buffer = await response.arrayBuffer();
-		return {
-			getUrl() {
-				return response.url || resourceURL;
-			},
-			getContentType() {
-				return response.headers && response.headers.get("content-type");
-			},
-			getStatusCode() {
-				return response.status;
-			},
-			getSize() {
-				return buffer.byteLength;
-			},
-			getText(charset) {
-				return new TextDecoder(charset).decode(buffer);
-			},
-			async getDataUri(contentType) {
-				const reader = new FileReader();
-				reader.readAsDataURL(new Blob([buffer], { type: contentType || this.getContentType() }));
-				return new Promise((resolve, reject) => {
-					reader.addEventListener("load", () => resolve(reader.result), false);
-					reader.addEventListener("error", reject, false);
-				});
-			}
-		};
-	}
-
 	// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
 	function hex(buffer) {
 		const hexCodes = [];