spring-web-modules/api/src/main/kotlin/com/cubetiqs/web/modules/uploader/FileStorageFactory.kt
Sambo Chea 048c11ee62
Some checks failed
continuous-integration/drone/push Build is failing
Add uploader and file storage provider with openapi docs and demo for modules
2022-04-21 11:57:44 +07:00

37 lines
1.0 KiB
Kotlin

package com.cubetiqs.web.modules.uploader
import org.springframework.web.multipart.MultipartFile
import java.io.File
object FileStorageFactory {
private var provider: FileStorageProvider? = null
fun setProvider(provider: FileStorageProvider) {
this.provider = provider
}
fun getProvider(): FileStorageProvider {
return provider ?: throw IllegalStateException("FileStorageProvider is not set")
}
fun store(file: File): FileResponse {
return getProvider().store(file)
}
fun store(file: MultipartFile): FileResponse {
val tempPath = System.getProperty("java.io.tmpdir") ?: if (System.getProperty("os.name").lowercase()
.contains("win")
) "C:\\Windows\\Temp" else "/tmp"
val temp = File("$tempPath/${file.originalFilename}")
file.transferTo(temp)
return this.store(temp)
}
fun delete(fileName: String) {
getProvider().delete(fileName)
}
fun get(fileName: String): FileResponse {
return getProvider().get(fileName)
}
}