added nostrbuild, can only upload very small files right now

This commit is contained in:
Believethehype
2023-05-02 00:23:59 +02:00
parent 8f257a7e2d
commit f889ff2547
3 changed files with 21 additions and 11 deletions
@@ -31,26 +31,31 @@ object ImageUploader {
checkNotNull(imageInputStream) { checkNotNull(imageInputStream) {
"Can't open the image input stream" "Can't open the image input stream"
} }
val myServer = if (server == ServersAvailable.IMGUR) { val myServer = if (server == ServersAvailable.IMGUR) {
ImgurServer() ImgurServer()
} else if (server == ServersAvailable.NOSTRIMG) { } else if (server == ServersAvailable.NOSTRIMG) {
NostrImgServer() NostrImgServer()
} else if (server == ServersAvailable.NOSTR_BUILD) {
NostrBuildServer()
} else { } else {
ImgurServer() ImgurServer()
} }
uploadImage(imageInputStream, contentType, myServer, onSuccess, onError) uploadImage(imageInputStream, contentType, myServer, server, onSuccess, onError)
} }
fun uploadImage( fun uploadImage(
inputStream: InputStream, inputStream: InputStream,
contentType: String?, contentType: String?,
server: FileServer, server: FileServer,
serverType: ServersAvailable,
onSuccess: (String, String?) -> Unit, onSuccess: (String, String?) -> Unit,
onError: (Throwable) -> 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 fileName = randomChars()
val extension = contentType?.let { MimeTypeMap.getSingleton().getExtensionFromMimeType(it) } ?: "" val extension = contentType?.let { MimeTypeMap.getSingleton().getExtensionFromMimeType(it) } ?: ""
@@ -73,16 +78,18 @@ object ImageUploader {
.build() .build()
val requestBuilder = Request.Builder() val requestBuilder = Request.Builder()
server.clientID()?.let { server.clientID()?.let {
requestBuilder.header("Authorization", it) requestBuilder.addHeader("Authorization", it)
}
if (serverType == ServersAvailable.NOSTR_BUILD) {
requestBuilder.addHeader("Content-Type", "multipart/form-data")
} }
requestBuilder requestBuilder
.header("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}") .addHeader("User-Agent", "Amethyst/${BuildConfig.VERSION_NAME}")
.url(server.postUrl(contentType)) .url(server.postUrl(contentType))
.post(requestBody) .post(requestBody)
val request = requestBuilder.build() val request = requestBuilder.build()
client.newCall(request).enqueue(object : Callback { client.newCall(request).enqueue(object : Callback {
@@ -146,12 +153,11 @@ class ImgurServer : FileServer() {
} }
class NostrBuildServer : 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? { override fun parseUrlFromSucess(body: String): String? {
val tree = jacksonObjectMapper().readTree(body) val url = jacksonObjectMapper().readTree(body)
val url = tree?.get("data")?.get("link")?.asText() return url.toString().replace("\"", "")
return url
} }
override fun clientID() = null override fun clientID() = null
@@ -610,6 +610,7 @@ fun ImageVideoDescription(
val fileServers = listOf( val fileServers = listOf(
Triple(ServersAvailable.IMGUR, stringResource(id = R.string.upload_server_imgur), stringResource(id = R.string.upload_server_imgur_explainer)), 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.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.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.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)) Triple(ServersAvailable.NIP95, stringResource(id = R.string.upload_server_relays_nip95), stringResource(id = R.string.upload_server_relays_nip95_explainer))
+3
View File
@@ -333,6 +333,9 @@
<string name="upload_server_nostrimg">nostrimg.com - less secure</string> <string name="upload_server_nostrimg">nostrimg.com - less secure</string>
<string name="upload_server_nostrimg_explainer">Uploads to NostrImg. NostrImg can change your image at any time</string> <string name="upload_server_nostrimg_explainer">Uploads to NostrImg. NostrImg can change your image at any time</string>
<string name="upload_server_nostrbuild">nostr.build- less secure</string>
<string name="upload_server_nostrbuild_explainer">Uploads to Nostr.build. Nostr.build can change your image at any time</string>
<string name="upload_server_imgur_nip94">Verifiable Imgur (NIP-94)</string> <string name="upload_server_imgur_nip94">Verifiable Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Protects from Imgur changing your image/video after you post</string> <string name="upload_server_imgur_nip94_explainer">Protects from Imgur changing your image/video after you post</string>