@@ -8,6 +8,10 @@ import com.gu.contentatom.thrift.{
88 EventType ,
99 ChangeRecord => ThriftChangeRecord
1010}
11+ import com .gu .media .iconik .{
12+ IconikProjectAssignedToAtomMessage ,
13+ IconikUploadActions
14+ }
1115import com .gu .media .logging .Logging
1216import com .gu .media .model .{
1317 AtomAssignedProjectMessage ,
@@ -20,7 +24,10 @@ import com.gu.media.util.MediaAtomImplicits
2024import com .gu .pandomainauth .model .{User => PandaUser }
2125import data .DataStores
2226import model .commands .CommandExceptions ._
23- import model .commands .UpdateAtomCommand .createDiffString
27+ import model .commands .UpdateAtomCommand .{
28+ createDiffString ,
29+ shouldNotifyThirdPartyServices
30+ }
2431import org .joda .time .DateTime
2532import util .AWSConfig
2633
@@ -131,8 +138,7 @@ case class UpdateAtomCommand(
131138
132139 val existingMediaAtom = MediaAtom .fromThrift(existingAtom)
133140 val updatedMediaAtom = MediaAtom .fromThrift(thrift)
134- processPlutoData(existingMediaAtom, updatedMediaAtom)
135-
141+ updateThirdPaties(existingMediaAtom, updatedMediaAtom)
136142 AuditMessage (
137143 atom.id,
138144 " Update" ,
@@ -157,16 +163,31 @@ case class UpdateAtomCommand(
157163 )
158164 }
159165
160- private def processPlutoData (oldAtom : MediaAtom , newAtom : MediaAtom ) = {
161- (
162- oldAtom.plutoData.flatMap(_.projectId),
163- newAtom.plutoData.flatMap(_.projectId)
164- ) match {
165- case (Some (oldProject), Some (newProject)) if oldProject != newProject =>
166- notifyPluto(newAtom)
167- case (None , Some (_)) => notifyPluto(newAtom)
168- case (_, _) => None
166+ private def updateThirdPaties (oldAtom : MediaAtom , newAtom : MediaAtom ) = {
167+ val oldIconikId = oldAtom.iconikData.flatMap(_.projectId)
168+ val newIconikId = newAtom.iconikData.flatMap(_.projectId)
169+ if (shouldNotifyThirdPartyServices(oldIconikId, newIconikId)) {
170+ notifyIconik(newAtom)
169171 }
172+
173+ val oldPlutoId = oldAtom.plutoData.flatMap(_.projectId)
174+ val newPlutoId = newAtom.plutoData.flatMap(_.projectId)
175+ if (shouldNotifyThirdPartyServices(oldPlutoId, newPlutoId)) {
176+ notifyPluto(newAtom)
177+ }
178+ }
179+
180+ private def notifyIconik (newAtom : MediaAtom ) = {
181+ val iconikUploadActions = new IconikUploadActions (awsConfig)
182+ newAtom.iconikData.foreach(iconikData =>
183+ iconikUploadActions.sendMessage(
184+ IconikProjectAssignedToAtomMessage (
185+ newAtom.id,
186+ newAtom.assets,
187+ iconikData
188+ )
189+ )
190+ )
170191 }
171192
172193 private def notifyPluto (newAtom : MediaAtom ) = {
@@ -202,4 +223,16 @@ object UpdateAtomCommand {
202223 " Updated atom fields"
203224 } else s " Updated atom fields ( ${changedFields.mkString(" , " )}) "
204225 }
226+
227+ def shouldNotifyThirdPartyServices (
228+ oldProjectId : Option [String ],
229+ newProjectId : Option [String ]
230+ ): Boolean = {
231+ (oldProjectId, newProjectId) match {
232+ case (Some (oldProject), Some (newProject)) if oldProject != newProject =>
233+ true
234+ case (None , Some (_)) => true
235+ case (_, _) => false
236+ }
237+ }
205238}
0 commit comments