@@ -3,7 +3,7 @@ package com.advancedtelematic.treehub.http
3
3
import java .io .File
4
4
5
5
import akka .http .scaladsl .model .StatusCodes
6
- import akka .http .scaladsl .server .{ Directive0 , Directive1 , PathMatcher1 }
6
+ import akka .http .scaladsl .server ._
7
7
import akka .stream .Materializer
8
8
import com .advancedtelematic .data .DataType .ObjectId
9
9
import com .advancedtelematic .libats .data .DataType .Namespace
@@ -36,6 +36,10 @@ class ObjectResource(namespace: Directive1[Namespace],
36
36
usageHandler ! UpdateBandwidth (namespace, usageBytes, objectId)
37
37
}
38
38
39
+ import OutOfBandStorageHeader ._
40
+
41
+ private val outOfBandStorageEnabled = validate(objectStore.outOfBandStorageEnabled, " Out of band storage not enabled" )
42
+
39
43
val route = namespace { ns =>
40
44
path(" objects" / PrefixedObjectId ) { objectId =>
41
45
head {
@@ -61,11 +65,7 @@ class ObjectResource(namespace: Directive1[Namespace],
61
65
complete(objectStore.completeClientUpload(ns, objectId).map(_ => StatusCodes .NoContent ))
62
66
} ~
63
67
(post & hintNamespaceStorage(ns)) {
64
- // TODO: abstract header name/header
65
- // TODO: Refactor all that repeated objectstore code
66
- // TODO: Issue Reject if redirect is disabled, this way will bubble down to accept file anyway
67
- // TODO: ^^^ Write test for that
68
- (headerValueByName(" x-ats-accept-redirect" ) & parameter(" size" .as[Long ])) { (_, size) =>
68
+ (outOfBandStorageEnabled & headerValueByType[OutOfBandStorageHeader ](()) & parameter(" size" .as[Long ])) { (_, size) =>
69
69
onSuccess(objectStore.storeOutOfBand(ns, objectId, size)) { case UploadAt (uri) =>
70
70
redirect(uri, StatusCodes .Found )
71
71
}
0 commit comments