def translate()

in thrall/app/lib/kinesis/MessageTranslator.scala [9:82]


  def translate(updateMessage: UpdateMessage): Either[Throwable, ExternalThrallMessage] = {
    updateMessage.subject match {
      case Image | ReingestImage | UpdateImage =>
        updateMessage.image match {
          case  Some(image) => Right(ImageMessage(updateMessage.lastModified, image))
          case _ => Left(MissingFieldsException(updateMessage.subject))
        }
      case DeleteImage => (updateMessage.id) match {
        case (Some(id)) => Right(DeleteImageMessage(id, updateMessage.lastModified))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case SoftDeleteImage => (updateMessage.id, updateMessage.softDeletedMetadata) match {
        case (Some(id) , Some(deletedMetadata)) => Right(SoftDeleteImageMessage(id, updateMessage.lastModified, deletedMetadata))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case UnSoftDeleteImage => (updateMessage.id) match {
        case (Some(id)) => Right(UnSoftDeleteImageMessage(id, updateMessage.lastModified))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case DeleteImageExports => (updateMessage.id) match {
        case (Some(id)) => Right(DeleteImageExportsMessage(id, updateMessage.lastModified))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case UpdateImageExports => (updateMessage.id, updateMessage.crops) match {
        case (Some(id), Some(crops)) => Right(UpdateImageExportsMessage(id, updateMessage.lastModified, crops))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case UpdateImageUserMetadata => (updateMessage.id, updateMessage.edits) match {
        case (Some(id), Some(edits)) => Right(UpdateImageUserMetadataMessage(id, updateMessage.lastModified, edits))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case UpdateImageUsages => (updateMessage.id, updateMessage.usageNotice) match {
        case (Some(id), Some(usageNotice)) => Right(UpdateImageUsagesMessage(id, updateMessage.lastModified, usageNotice))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case ReplaceImageLeases => (updateMessage.id, updateMessage.leases) match {
        case (Some(id), Some(leases)) => Right(ReplaceImageLeasesMessage(id, updateMessage.lastModified, leases))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case AddImageLease => (updateMessage.id, updateMessage.mediaLease) match {
        case (Some(id), Some(mediaLease)) => Right(AddImageLeaseMessage(id, updateMessage.lastModified, mediaLease))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case RemoveImageLease => (updateMessage.id, updateMessage.leaseId) match {
        case (Some(id), Some(leaseId)) => Right(RemoveImageLeaseMessage(id, updateMessage.lastModified, leaseId))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case SetImageCollections => (updateMessage.id, updateMessage.collections) match {
        case (Some(id), Some(collections)) => Right(SetImageCollectionsMessage(id, updateMessage.lastModified, collections))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case DeleteUsages => (updateMessage.id) match {
        case Some(id) => Right(DeleteUsagesMessage(id, updateMessage.lastModified))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case DeleteSingleUsage => (updateMessage.id, updateMessage.usageId) match {
        case (Some(id), Some(usageId)) => Right(DeleteSingleUsageMessage(id, updateMessage.lastModified, usageId))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case UpdateImageSyndicationMetadata => (updateMessage.id, updateMessage.syndicationRights) match {
        case (Some(id), maybeSyndicationMetadata) => Right(UpdateImageSyndicationMetadataMessage(id, updateMessage.lastModified, maybeSyndicationMetadata))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case UpdateImagePhotoshootMetadata => (updateMessage.id, updateMessage.edits) match {
        case (Some(id), Some(edits)) => Right(UpdateImagePhotoshootMetadataMessage(id, updateMessage.lastModified, edits))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case UpdateUsageStatus => (updateMessage.id, updateMessage.usageNotice ) match {
        case (Some(id), Some(usageNotice)) => Right(UpdateUsageStatusMessage(id, usageNotice, updateMessage.lastModified))
        case _ => Left(MissingFieldsException(updateMessage.subject))
      }
      case _ => Left(ProcessorNotFoundException(updateMessage.subject))
    }
  }