From e8bcba129ebfa5700eddc02fdf2288e1d4938fdc Mon Sep 17 00:00:00 2001 From: Kieran Date: Mon, 20 Nov 2023 19:09:49 +0000 Subject: [PATCH] feat: (nip96) nostrcheck.me --- packages/app/src/Login/Preferences.ts | 2 +- packages/app/src/Pages/settings/Preferences.tsx | 1 + packages/app/src/Upload/Nip96.ts | 15 +++++++++++++-- packages/app/src/Upload/index.ts | 3 +++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/app/src/Login/Preferences.ts b/packages/app/src/Login/Preferences.ts index 43f6f2a4..1626dcf6 100644 --- a/packages/app/src/Login/Preferences.ts +++ b/packages/app/src/Login/Preferences.ts @@ -45,7 +45,7 @@ export interface UserPreferences { /** * File uploading service to upload attachments to */ - fileUploader: "void.cat" | "nostr.build" | "nostrimg.com" | "void.cat-NIP96"; + fileUploader: "void.cat" | "nostr.build" | "nostrimg.com" | "void.cat-NIP96" | "nostrcheck.me"; /** * Use imgproxy to optimize images diff --git a/packages/app/src/Pages/settings/Preferences.tsx b/packages/app/src/Pages/settings/Preferences.tsx index 6d7e0d33..0cbab73f 100644 --- a/packages/app/src/Pages/settings/Preferences.tsx +++ b/packages/app/src/Pages/settings/Preferences.tsx @@ -474,6 +474,7 @@ const PreferencesPage = () => { +
diff --git a/packages/app/src/Upload/Nip96.ts b/packages/app/src/Upload/Nip96.ts index bb815f23..e419bf4b 100644 --- a/packages/app/src/Upload/Nip96.ts +++ b/packages/app/src/Upload/Nip96.ts @@ -13,6 +13,11 @@ export class Nip96Uploader implements Uploader { return []; } + async loadInfo() { + const rsp = await fetch(this.url); + return (await rsp.json()) as Nip96Info; + } + async upload(file: File | Blob, filename: string): Promise { throwIfOffline(); const auth = async (url: string, method: string) => { @@ -22,18 +27,19 @@ export class Nip96Uploader implements Uploader { return `Nostr ${base64.encode(new TextEncoder().encode(JSON.stringify(auth)))}`; }; + const info = await this.loadInfo(); const fd = new FormData(); fd.append("size", file.size.toString()); fd.append("alt", filename); fd.append("media_type", file.type); fd.append("file", file); - const rsp = await fetch(this.url, { + const rsp = await fetch(info.api_url, { body: fd, method: "POST", headers: { accept: "application/json", - authorization: await auth(this.url, "POST"), + authorization: await auth(info.api_url, "POST"), }, }); if (rsp.ok) { @@ -62,6 +68,11 @@ export class Nip96Uploader implements Uploader { } } +export interface Nip96Info { + api_url: string; + download_url?: string; +} + export interface Nip96Result { status: string; message: string; diff --git a/packages/app/src/Upload/index.ts b/packages/app/src/Upload/index.ts index ad818125..e51a16cf 100644 --- a/packages/app/src/Upload/index.ts +++ b/packages/app/src/Upload/index.ts @@ -78,6 +78,9 @@ export default function useFileUpload(): Uploader { case "void.cat-NIP96": { return new Nip96Uploader("https://void.cat/nostr", unwrap(publisher)); } + case "nostrcheck.me": { + return new Nip96Uploader("https://nostrcheck.me/api/v2/nip96", unwrap(publisher)); + } case "nostrimg.com": { return { upload: NostrImg,