convert downloadutils to kotlin

This commit is contained in:
Austin Huang 2021-06-22 16:06:14 -04:00
parent a7cb82354e
commit 3dcc791cba
No known key found for this signature in database
GPG Key ID: 84C23AA04587A91F
4 changed files with 460 additions and 484 deletions

View File

@ -193,9 +193,9 @@ object BitmapUtils {
} }
@Throws(IOException::class) @Throws(IOException::class)
fun convertToJpegAndSaveToFile(contentResolver: ContentResolver, bitmap: Bitmap, file: DocumentFile?): DocumentFile { fun convertToJpegAndSaveToFile(contentResolver: ContentResolver, bitmap: Bitmap, file: DocumentFile?): DocumentFile? {
val tempFile = file ?: DownloadUtils.getTempFile(null, "jpg") val tempFile = file ?: DownloadUtils.getTempFile(null, "jpg")
contentResolver.openOutputStream(tempFile.uri).use { output -> contentResolver.openOutputStream(tempFile!!.uri).use { output ->
val compressResult = bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output) val compressResult = bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output)
if (!compressResult) { if (!compressResult) {
throw RuntimeException("Compression failed!") throw RuntimeException("Compression failed!")

File diff suppressed because it is too large Load Diff

View File

@ -36,8 +36,8 @@ object MediaUploader {
contentResolver: ContentResolver, contentResolver: ContentResolver,
bitmap: Bitmap, bitmap: Bitmap,
): MediaUploadResponse = withContext(Dispatchers.IO) { ): MediaUploadResponse = withContext(Dispatchers.IO) {
val file: DocumentFile = BitmapUtils.convertToJpegAndSaveToFile(contentResolver, bitmap, null) val file: DocumentFile? = BitmapUtils.convertToJpegAndSaveToFile(contentResolver, bitmap, null)
val byteLength: Long = file.length() val byteLength: Long = file!!.length()
val options = createUploadPhotoOptions(byteLength) val options = createUploadPhotoOptions(byteLength)
val headers = getUploadPhotoHeaders(options) val headers = getUploadPhotoHeaders(options)
val url = HOST + "/rupload_igphoto/" + options.name + "/" val url = HOST + "/rupload_igphoto/" + options.name + "/"

View File

@ -131,7 +131,7 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti
var totalRead = 0f var totalRead = 0f
try { try {
BufferedInputStream(urlConnection.getInputStream()).use { bis -> BufferedInputStream(urlConnection.getInputStream()).use { bis ->
contentResolver.openOutputStream(outFile.uri).use { fos -> contentResolver.openOutputStream(outFile!!.uri).use { fos ->
val buffer = ByteArray(0x2000) val buffer = ByteArray(0x2000)
var count: Int var count: Int
while (bis.read(buffer, 0, 0x2000).also { count = it } != -1) { while (bis.read(buffer, 0, 0x2000).also { count = it } != -1) {
@ -146,11 +146,11 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti
} }
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Error while writing data from url: " + url + " to file: " + outFile.name, e) Log.e(TAG, "Error while writing data from url: " + url + " to file: " + outFile!!.name, e)
} }
if (isJpg) { if (isJpg) {
try { try {
contentResolver.openInputStream(outFile.uri).use { fis -> contentResolver.openInputStream(outFile!!.uri).use { fis ->
contentResolver.openOutputStream(filePath.uri).use { fos -> contentResolver.openOutputStream(filePath.uri).use { fos ->
val jpegIptcRewriter = JpegIptcRewriter() val jpegIptcRewriter = JpegIptcRewriter()
jpegIptcRewriter.removeIPTC(fis, fos) jpegIptcRewriter.removeIPTC(fis, fos)
@ -158,10 +158,10 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Error while removing iptc: url: " + url Log.e(TAG, "Error while removing iptc: url: " + url
+ ", tempFile: " + outFile.name + ", tempFile: " + outFile!!.name
+ ", finalFile: " + filePath.name, e) + ", finalFile: " + filePath.name, e)
} }
val deleted = outFile.delete() val deleted = outFile!!.delete()
if (!deleted) { if (!deleted) {
Log.w(TAG, "download: tempFile not deleted!") Log.w(TAG, "download: tempFile not deleted!")
} }
@ -393,7 +393,7 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti
class Builder { class Builder {
private var urlToFilePathMap: MutableMap<String, String> = mutableMapOf() private var urlToFilePathMap: MutableMap<String, String> = mutableMapOf()
fun setUrlToFilePathMap(urlToFilePathMap: MutableMap<String, DocumentFile>): Builder { fun setUrlToFilePathMap(urlToFilePathMap: Map<String, DocumentFile>): Builder {
this.urlToFilePathMap = urlToFilePathMap this.urlToFilePathMap = urlToFilePathMap
.mapValues { it.value.uri.toString() } .mapValues { it.value.uri.toString() }
.toMutableMap() .toMutableMap()