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