diff --git a/corespring-components b/corespring-components index 29b48b59c..e5287acef 160000 --- a/corespring-components +++ b/corespring-components @@ -1 +1 @@ -Subproject commit 29b48b59c3dd97d12119860bda786a4cb811445b +Subproject commit e5287acef1ab84a4c8008e079f70cb24d6f472fb diff --git a/modules/lib/v2-player-integration/src/main/scala/org/corespring/v2/player/hooks/PlayerHooks.scala b/modules/lib/v2-player-integration/src/main/scala/org/corespring/v2/player/hooks/PlayerHooks.scala index eacec56af..e34693341 100644 --- a/modules/lib/v2-player-integration/src/main/scala/org/corespring/v2/player/hooks/PlayerHooks.scala +++ b/modules/lib/v2-player-integration/src/main/scala/org/corespring/v2/player/hooks/PlayerHooks.scala @@ -3,6 +3,7 @@ package org.corespring.v2.player.hooks import org.bson.types.ObjectId import org.corespring.container.client.hooks.{ PlayerHooks => ContainerPlayerHooks } import org.corespring.container.client.integration.ContainerExecutionContext +import org.corespring.container.components.processing.StashProcessor import org.corespring.conversion.qti.transformers.ItemTransformer import org.corespring.models.appConfig.ArchiveConfig import org.corespring.models.item.{ Item, PlayerDefinition } @@ -39,6 +40,7 @@ class PlayerHooks( itemTransformer: ItemTransformer, playerAssets: PlayerAssets, playerItemProcessor: PlayerItemProcessor, + stashProcessor: StashProcessor, sessionAuth: SessionAuth[OrgAndOpts, PlayerDefinition], override implicit val containerContext: ContainerExecutionContext) extends ContainerPlayerHooks with LoadOrgAndOptions { @@ -55,6 +57,13 @@ class PlayerHooks( "itemId" -> item.id.toString, "collectionId" -> item.collectionId) + def addOptionalStash(item: JsValue, session: JsObject): JsObject = { + stashProcessor.prepareStash(item, session) match { + case Some(stash) => session ++ Json.obj("components" -> stash) + case _ => session + } + } + lazy val getVid: Validation[V2Error, VersionedId[ObjectId]] = { val withVersion: Option[VersionedId[ObjectId]] = VersionedId(itemId).map { id => @@ -71,9 +80,10 @@ class PlayerHooks( vid <- getVid item <- itemTransformer.loadItemAndUpdateV2(vid).toSuccess(generalError("Error generating item v2 JSON", INTERNAL_SERVER_ERROR)) session <- Success(createSessionJson(item)) - sessionId <- sessionAuth.create(session)(identity) playerDefinitionJson <- Success(playerItemProcessor.makePlayerDefinitionJson(session, item.playerDefinition)) - } yield (Json.obj("id" -> sessionId.toString) ++ session, playerDefinitionJson) + sessionWithStash <- Success(addOptionalStash(playerDefinitionJson, session)) + sessionId <- sessionAuth.create(sessionWithStash)(identity) + } yield (Json.obj("id" -> sessionId.toString) ++ sessionWithStash, playerDefinitionJson) result .leftMap(s => UNAUTHORIZED -> s.message) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 26fb770b3..65156dd23 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -4,7 +4,7 @@ object Dependencies { val playVersion = "2.2.1" //V2 Player - val containerVersion = "3.3.0-SNAPSHOT" + val containerVersion = "3.3.0-server-stash-SNAPSHOT" val qtiVersion = "0.16" def toModule(name: String) = "org.corespring" %% name % containerVersion