Quellcode durchsuchen

always encode # in the path when uploading data on a server

Gildas vor 3 Jahren
Ursprung
Commit
64176119d5
3 geänderte Dateien mit 14 neuen und 9 gelöschten Zeilen
  1. 3 3
      src/core/bg/autosave.js
  2. 10 5
      src/core/bg/downloads.js
  3. 1 1
      src/lib/github/github.js

+ 3 - 3
src/core/bg/autosave.js

@@ -159,13 +159,13 @@ async function saveContent(message, tab) {
 				}
 				if (options.saveToGDrive) {
 					const blob = new Blob([pageData.content], { type: "text/html" });
-					await downloads.saveToGDrive(message.taskId, pageData.filename, blob, options, {
+					await downloads.saveToGDrive(message.taskId, downloads.encodeSharpCharacter(pageData.filename), blob, options, {
 						forceWebAuthFlow: options.forceWebAuthFlow
 					});
 				} else if (options.saveWithWebDAV) {
-					await downloads.saveWithWebDAV(message.taskId, pageData.filename, pageData.content, options.webDAVURL, options.webDAVUser, options.webDAVPassword);
+					await downloads.saveWithWebDAV(message.taskId, downloads.encodeSharpCharacter(pageData.filename), pageData.content, options.webDAVURL, options.webDAVUser, options.webDAVPassword);
 				} else if (options.saveToGitHub) {
-					await (await downloads.saveToGitHub(message.taskId, pageData.filename, pageData.content, options.githubToken, options.githubUser, options.githubRepository, options.githubBranch)).pushPromise;
+					await (await downloads.saveToGitHub(message.taskId, downloads.encodeSharpCharacter(pageData.filename), pageData.content, options.githubToken, options.githubUser, options.githubRepository, options.githubBranch)).pushPromise;
 				} else if (options.saveWithCompanion) {
 					await companion.save({
 						filename: pageData.filename,

+ 10 - 5
src/core/bg/downloads.js

@@ -50,7 +50,8 @@ export {
 	downloadPage,
 	saveToGDrive,
 	saveToGitHub,
-	saveWithWebDAV
+	saveWithWebDAV,
+	encodeSharpCharacter
 };
 
 async function onMessage(message, sender) {
@@ -126,15 +127,15 @@ async function downloadTabPage(message, tab) {
 async function downloadContent(contents, tab, incognito, message) {
 	try {
 		if (message.saveWithWebDAV) {
-			await saveWithWebDAV(message.taskId, message.filename, contents.join(""), message.webDAVURL, message.webDAVUser, message.webDAVPassword);
+			await saveWithWebDAV(message.taskId, encodeSharpCharacter(message.filename), contents.join(""), message.webDAVURL, message.webDAVUser, message.webDAVPassword);
 		} else if (message.saveToGDrive) {
-			await saveToGDrive(message.taskId, message.filename, new Blob(contents, { type: MIMETYPE_HTML }), {
+			await saveToGDrive(message.taskId, encodeSharpCharacter(message.filename), new Blob(contents, { type: MIMETYPE_HTML }), {
 				forceWebAuthFlow: message.forceWebAuthFlow
 			}, {
 				onProgress: (offset, size) => ui.onUploadProgress(tab.id, offset, size)
 			});
 		} else if (message.saveToGitHub) {
-			await (await saveToGitHub(message.taskId, message.filename, contents.join(""), message.githubToken, message.githubUser, message.githubRepository, message.githubBranch)).pushPromise;
+			await (await saveToGitHub(message.taskId, encodeSharpCharacter(message.filename), contents.join(""), message.githubToken, message.githubUser, message.githubRepository, message.githubBranch)).pushPromise;
 		} else if (message.saveWithCompanion) {
 			await companion.save({
 				filename: message.filename,
@@ -171,6 +172,10 @@ async function downloadContent(contents, tab, incognito, message) {
 	}
 }
 
+function encodeSharpCharacter(path) {
+	return path.replace(/#/g, "%23");
+}
+
 function getRegExp(string) {
 	return string.replace(REGEXP_ESCAPE, "\\$1");
 }
@@ -324,7 +329,7 @@ async function downloadPage(pageData, options) {
 				if (downloadData.filename.startsWith("/")) {
 					downloadData.filename = downloadData.filename.substring(1);
 				}
-				downloadData.filename = "file:///" + downloadData.filename.replace(/#/g, "%23");
+				downloadData.filename = "file:///" + encodeSharpCharacter(downloadData.filename);
 			}
 			await bookmarks.update(pageData.bookmarkId, { url: downloadData.filename });
 		}

+ 1 - 1
src/lib/github/github.js

@@ -46,7 +46,7 @@ async function pushGitHub(token, userName, repositoryName, branchName, path, con
 
 	async function createContent({ path, content, message = "" }, signal) {
 		try {
-			const response = await fetch(`https://api.github.com/repos/${userName}/${repositoryName}/contents/${path.replace(/#/g, "%23")}`, {
+			const response = await fetch(`https://api.github.com/repos/${userName}/${repositoryName}/contents/${path}`, {
 				method: "PUT",
 				headers: new Map([
 					["Authorization", `token ${token}`],