diff options
author | Jakob Odersky <jakob@driver.xyz> | 2017-07-25 00:16:26 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2017-07-25 00:16:26 -0700 |
commit | 124fd35527601c61c20f7f9e4a3d099c5e0b883b (patch) | |
tree | 3e904260f77fbaeb01efa7c4117da4e7eaff95c9 /src/main/scala/xyz/driver/core/file/FileSystemStorage.scala | |
parent | b6fd7800eb503da02ca9724c081b9dd590341bca (diff) | |
download | driver-core-124fd35527601c61c20f7f9e4a3d099c5e0b883b.tar.gz driver-core-124fd35527601c61c20f7f9e4a3d099c5e0b883b.tar.bz2 driver-core-124fd35527601c61c20f7f9e4a3d099c5e0b883b.zip |
Add streaming download to file storage.v0.14.0
This enables downloading of content without saving it to a file.
Diffstat (limited to 'src/main/scala/xyz/driver/core/file/FileSystemStorage.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/file/FileSystemStorage.scala | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/file/FileSystemStorage.scala b/src/main/scala/xyz/driver/core/file/FileSystemStorage.scala index fab1307..0d49f2d 100644 --- a/src/main/scala/xyz/driver/core/file/FileSystemStorage.scala +++ b/src/main/scala/xyz/driver/core/file/FileSystemStorage.scala @@ -1,5 +1,8 @@ package xyz.driver.core.file +import akka.NotUsed +import akka.stream.scaladsl.{FileIO, Source} +import akka.util.ByteString import java.io.File import java.nio.file.{Files, Path, Paths} @@ -33,6 +36,15 @@ class FileSystemStorage(executionContext: ExecutionContext) extends FileStorage Option(new File(filePath.toString)).filter(file => file.exists() && file.isFile) }) + override def stream(filePath: Path): OptionT[Future, Source[ByteString, NotUsed]] = + OptionT.optionT(Future { + if (Files.exists(filePath)) { + Some(FileIO.fromPath(filePath).mapMaterializedValue(_ => NotUsed)) + } else { + None + } + }) + override def delete(filePath: Path): Future[Unit] = Future { val file = new File(filePath.toString) if (file.delete()) () |