Come pubblicare immagini tramite API?

Sono andato avanti e ho provato (proverbialmente a lanciare spaghetti bagnati per vedere cosa si attacca). Ma ero già apprensivo e @simon ha ragione.

Idealmente, il plugin sarebbe disponibile anche su mobile. Ma per ora, se solo desktop è quello che otteniamo, è quello che otteniamo.

Naturalmente, un’altra soluzione potrebbe essere: Obsidian Vault su mobile → sincronizzazione su Desktop → cli per caricare su Discourse. Ma questo sembra un po’ contorto.

In sostanza, la situazione ideale è che il forum Discourse sostituisca l’Obsidian Vault. In questo modo gli utenti che preferiscono il forum, possono usare il forum. Gli utenti che preferiscono (o che in effetti necessitano di una soluzione offline) possono usare Obsidian. Ho già alcune idee su come potrebbe funzionare una sincronizzazione bidirezionale. Ma penso che le immagini/file debbano essere gestiti in qualche modo prima.

Modifica:
Sono abbastanza convinto che questo funzionerà, ma non riesco a impostare correttamente i parametri:

					try {
						const imgfile = await this.app.vault.readBinary(file);
						const boundary = genBoundary();
						const sBoundary = '--' + boundary + '\r\n';
						let body = '';
						body += `${sBoundary}Content-Disposition: form-data; name=\"type\"\r\n\r\ncomposer\r\n`;
						body += `${sBoundary}Content-Disposition: form-data; name=\"synchronous\"\r\n\r\ntrue\r\n`;
						body += `${sBoundary}Content-Disposition: form-data; name=\"files[]\"; filename=\"${file.name}\"\r\nContent-Type: image/jpg\r\n`;

						const eBoundary = '\r\n--' + boundary + '--' + '\r\n';
						const bodyArray = new TextEncoder().encode(body);
						const endBoundaryArray = new TextEncoder().encode(eBoundary);

						const formDataArray = new Uint8Array(bodyArray.length + imgfile.byteLength + endBoundaryArray.length);
						formDataArray.set(bodyArray, 0);
						formDataArray.set(new Uint8Array(imgfile), bodyArray.length);
						formDataArray.set(endBoundaryArray, bodyArray.length + imgfile.byteLength);

						const url = `${this.settings.baseUrl}/uploads.json`;
						const headers = {
							"Api-Key": this.settings.apiKey,
							"Api-Username": this.settings.disUser,
							"Content-Type": `multipart/form-data; boundary=${boundary}`
						};

						const response = await requestUrl({
							url: url,
							method: "POST",
							body: formDataArray,
							throw: false,
							headers: headers,
						});

						if (response.status == 200) {
							const jsonResponse = response.json();
							console.log(`Upload Image jsonResponse: ${JSON.stringify(jsonResponse)}`);
							imageUrls.push(jsonResponse.url);
						} else {
							new NotifyUser(this.app, `Error uploading image: ${response.status}`).open();
							console.error(`Error uploading image: ${JSON.stringify(response.json)}`);
						}