Skip to content

Commit c8f61c2

Browse files
committed
update uploadResource signature
1 parent abc92eb commit c8f61c2

File tree

4 files changed

+59
-22
lines changed

4 files changed

+59
-22
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ ThisBuild / organization := "app.softnetwork"
3131

3232
name := "resource"
3333

34-
ThisBuild / version := "0.2.4"
34+
ThisBuild / version := "0.2.4.1"
3535

3636
ThisBuild / scalaVersion := "2.12.15"
3737

core/src/main/scala/app/softnetwork/resource/service/LoadResourceService.scala

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ import app.softnetwork.resource.message.ResourceMessages.{
1616
import app.softnetwork.resource.spi.ResourceProvider
1717
import app.softnetwork.utils.MimeTypeTools
1818
import org.apache.tika.mime.MediaType
19-
import org.softnetwork.session.model.Session
2019

2120
import java.nio.file.Path
2221
import scala.concurrent.Future
2322

2423
trait LoadResourceService extends Service[ResourceCommand, ResourceResult] {
2524
_: GenericResourceHandler with ResourceProvider =>
2625

27-
def loadResource(resourceDetails: ResourceDetails): Option[(Path, Option[MediaType])] = {
26+
def loadResource(segments: List[String]): Option[(Path, Option[MediaType])] = {
27+
val resourceDetails: ResourceDetails = segments
2828
import resourceDetails._
2929
loadResource(uuid, uri, None, options: _*) match {
3030
case Some(path) =>
@@ -47,32 +47,35 @@ trait LoadResourceService extends Service[ResourceCommand, ResourceResult] {
4747
.flatMap(mimeType => Option(MediaType.parse(mimeType)))
4848
}
4949
)
50-
case _ => None
50+
case _ =>
51+
log.warn(s"Could not find resource for ${segments.mkString("/")}")
52+
None
5153
}
52-
case _ => None
54+
case _ =>
55+
log.warn(s"Could not find resource for ${segments.mkString("/")}")
56+
None
5357
}
5458
}
5559
}
5660

5761
def uploadResource(
58-
session: Session,
5962
resourceDetails: ResourceDetails,
6063
bytes: Array[Byte],
6164
update: Boolean
6265
): Future[Either[ResourceError, ResourceResult]] = {
6366
import resourceDetails._
64-
log.info(s"Resource ${session.id}#$uuid uploaded successfully")
67+
log.info(s"Resource $uuid uploaded successfully")
6568
run(
66-
s"${session.id}#$uuid",
69+
uuid,
6770
if (update) {
6871
UpdateResource(
69-
s"${session.id}#$uuid",
72+
uuid,
7073
bytes,
7174
uri
7275
)
7376
} else {
7477
CreateResource(
75-
s"${session.id}#$uuid",
78+
uuid,
7679
bytes,
7780
uri
7881
)

core/src/main/scala/app/softnetwork/resource/service/ResourceService.scala

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import com.typesafe.scalalogging.StrictLogging
1919
import de.heikoseeberger.akkahttpjson4s.Json4sSupport
2020
import org.json4s.{jackson, Formats}
2121
import org.json4s.jackson.Serialization
22-
import org.softnetwork.session.model.Session
2322

2423
/** Created by smanciot on 13/05/2020.
2524
*/
@@ -62,10 +61,8 @@ trait ResourceService
6261

6362
def resource(fieldName: String = "file"): Route = {
6463
path(Segments(1, 128)) { segments =>
65-
val resourceDetails: ResourceDetails = segments
66-
import resourceDetails._
6764
get {
68-
loadResource(resourceDetails) match {
65+
loadResource(segments) match {
6966
case Some((path, _)) => getFromFile(path.toFile)
7067
case _ => complete(HttpResponse(StatusCodes.NotFound))
7168
}
@@ -79,7 +76,13 @@ trait ResourceService
7976
implicit val materializer: Materializer = ctx.materializer
8077
fileUpload(fieldName) {
8178
case (_, byteSource) =>
82-
completeResource(session, resourceDetails, byteSource, update = false)
79+
val resourceDetails: ResourceDetails = segments
80+
import resourceDetails._
81+
completeResource(
82+
resourceDetails.copy(uuid = s"${session.id}#$uuid"),
83+
byteSource,
84+
update = false
85+
)
8386
case _ => complete(HttpResponse(StatusCodes.BadRequest))
8487
}
8588
}
@@ -89,12 +92,20 @@ trait ResourceService
8992
implicit val materializer: Materializer = ctx.materializer
9093
fileUpload(fieldName) {
9194
case (_, byteSource) =>
92-
completeResource(session, resourceDetails, byteSource, update = true)
95+
val resourceDetails: ResourceDetails = segments
96+
import resourceDetails._
97+
completeResource(
98+
resourceDetails.copy(uuid = s"${session.id}#$uuid"),
99+
byteSource,
100+
update = true
101+
)
93102
case _ => complete(HttpResponse(StatusCodes.BadRequest))
94103
}
95104
}
96105
} ~
97106
delete {
107+
val resourceDetails: ResourceDetails = segments
108+
import resourceDetails._
98109
run(s"${session.id}#$uuid", DeleteResource(s"${session.id}#$uuid")) completeWith {
99110
case ResourceDeleted => complete(HttpResponse(StatusCodes.OK))
100111
case ResourceNotFound => complete(HttpResponse(StatusCodes.NotFound))
@@ -108,15 +119,14 @@ trait ResourceService
108119
}
109120

110121
protected def completeResource(
111-
session: Session,
112122
resourceDetails: ResourceDetails,
113123
byteSource: Source[ByteString, Any],
114124
update: Boolean
115125
)(implicit materializer: Materializer): Route = {
116126
val future =
117127
byteSource.map { s => s.toArray }.runFold(Array[Byte]()) { (acc, bytes) => acc ++ bytes }
118128
onSuccess(future) { bytes =>
119-
uploadResource(session, resourceDetails, bytes, update) completeWith {
129+
uploadResource(resourceDetails, bytes, update) completeWith {
120130
case Right(r) =>
121131
r match {
122132
case ResourceCreated => complete(StatusCodes.Created)

core/src/main/scala/app/softnetwork/resource/service/ResourceServiceEndpoints.scala

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,13 @@ trait ResourceServiceEndpoints
112112
uploadResource[T].post
113113
.description("Add a resource")
114114
.serverLogic(session => { case (segments, upload) =>
115-
uploadResource(session, segments, upload.bytes, update = false) map {
115+
val resourceDetails: ResourceDetails = segments
116+
import resourceDetails._
117+
uploadResource(
118+
resourceDetails.copy(uuid = s"${session.id}#$uuid"),
119+
upload.bytes,
120+
update = false
121+
) map {
116122
case Right(r) => Right(r)
117123
case Left(l) => Left(error(l))
118124
}
@@ -124,7 +130,13 @@ trait ResourceServiceEndpoints
124130
uploadResource[T].put
125131
.description("Update the resource")
126132
.serverLogic(session => { case (segments, upload) =>
127-
uploadResource(session, segments, upload.bytes, update = true) map {
133+
val resourceDetails: ResourceDetails = segments
134+
import resourceDetails._
135+
uploadResource(
136+
resourceDetails.copy(uuid = s"${session.id}#$uuid"),
137+
upload.bytes,
138+
update = true
139+
) map {
128140
case Right(r) => Right(r)
129141
case Left(l) => Left(error(l))
130142
}
@@ -165,7 +177,13 @@ trait ResourceServiceEndpoints
165177
uploadImage[T].post
166178
.description("Add an image")
167179
.serverLogic(session => { case (segments, upload) =>
168-
uploadResource(session, segments, upload.bytes, update = false) map {
180+
val resourceDetails: ResourceDetails = segments
181+
import resourceDetails._
182+
uploadResource(
183+
resourceDetails.copy(uuid = s"${session.id}#$uuid"),
184+
upload.bytes,
185+
update = false
186+
) map {
169187
case Right(r) => Right(r)
170188
case Left(l) => Left(error(l))
171189
}
@@ -177,7 +195,13 @@ trait ResourceServiceEndpoints
177195
uploadImage[T].put
178196
.description("Update the image")
179197
.serverLogic(session => { case (segments, upload) =>
180-
uploadResource(session, segments, upload.bytes, update = true) map {
198+
val resourceDetails: ResourceDetails = segments
199+
import resourceDetails._
200+
uploadResource(
201+
resourceDetails.copy(uuid = s"${session.id}#$uuid"),
202+
upload.bytes,
203+
update = true
204+
) map {
181205
case Right(r) => Right(r)
182206
case Left(l) => Left(error(l))
183207
}

0 commit comments

Comments
 (0)