diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt index 7dd5bb23f..be6095797 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt @@ -31,26 +31,31 @@ object ImageUploader { checkNotNull(imageInputStream) { "Can't open the image input stream" } - val myServer = if (server == ServersAvailable.IMGUR) { ImgurServer() } else if (server == ServersAvailable.NOSTRIMG) { NostrImgServer() + } else if (server == ServersAvailable.NOSTR_BUILD) { + NostrBuildServer() } else { ImgurServer() } - uploadImage(imageInputStream, contentType, myServer, onSuccess, onError) + uploadImage(imageInputStream, contentType, myServer, server, onSuccess, onError) } fun uploadImage( inputStream: InputStream, contentType: String?, server: FileServer, + serverType: ServersAvailable, onSuccess: (String, String?) -> Unit, onError: (Throwable) -> Unit ) { - val category = contentType?.toMediaType()?.toString()?.split("/")?.get(0) ?: "image" + var category = "fileToUpload" + if (serverType != ServersAvailable.NOSTR_BUILD) { + category = contentType?.toMediaType()?.toString()?.split("/")?.get(0) ?: "image" + } val fileName = randomChars() val extension = contentType?.let { MimeTypeMap.getSingleton().getExtensionFromMimeType(it) } ?: "" @@ -73,16 +78,18 @@ object ImageUploader { .build() val requestBuilder = Request.Builder() - server.clientID()?.let { - requestBuilder.header("Authorization", it) + requestBuilder.addHeader("Authorization", it) + } + + if (serverType == ServersAvailable.NOSTR_BUILD) { + requestBuilder.addHeader("Content-Type", "multipart/form-data") } requestBuilder - .header("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}") + .addHeader("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}") .url(server.postUrl(contentType)) .post(requestBody) - val request = requestBuilder.build() client.newCall(request).enqueue(object : Callback { @@ -146,12 +153,11 @@ class ImgurServer : FileServer() { } class NostrBuildServer : FileServer() { - override fun postUrl(contentType: String?) = "https://nostr.build/api/upload/amethyst.php" + override fun postUrl(contentType: String?) = "https://nostr.build/api/upload/android.php" override fun parseUrlFromSucess(body: String): String? { - val tree = jacksonObjectMapper().readTree(body) - val url = tree?.get("data")?.get("link")?.asText() - return url + val url = jacksonObjectMapper().readTree(body) + return url.toString().replace("\"", "") } override fun clientID() = null diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt index e6fe1e9a4..c008952dd 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostView.kt @@ -610,6 +610,7 @@ fun ImageVideoDescription( val fileServers = listOf( Triple(ServersAvailable.IMGUR, stringResource(id = R.string.upload_server_imgur), stringResource(id = R.string.upload_server_imgur_explainer)), Triple(ServersAvailable.NOSTRIMG, stringResource(id = R.string.upload_server_nostrimg), stringResource(id = R.string.upload_server_nostrimg_explainer)), + Triple(ServersAvailable.NOSTR_BUILD, stringResource(id = R.string.upload_server_nostrbuild), stringResource(id = R.string.upload_server_nostrbuild_explainer)), Triple(ServersAvailable.IMGUR_NIP_94, stringResource(id = R.string.upload_server_imgur_nip94), stringResource(id = R.string.upload_server_imgur_nip94_explainer)), Triple(ServersAvailable.NOSTRIMG_NIP_94, stringResource(id = R.string.upload_server_nostrimg_nip94), stringResource(id = R.string.upload_server_nostrimg_nip94_explainer)), Triple(ServersAvailable.NIP95, stringResource(id = R.string.upload_server_relays_nip95), stringResource(id = R.string.upload_server_relays_nip95_explainer)) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 921787a85..7fd0d6d94 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -333,6 +333,9 @@ nostrimg.com - less secure Uploads to NostrImg. NostrImg can change your image at any time + nostr.build- less secure + Uploads to Nostr.build. Nostr.build can change your image at any time + Verifiable Imgur (NIP-94) Protects from Imgur changing your image/video after you post