def fromResponseItem()

in app/vidispine/SearchResultDocument.scala [52:99]


  def fromResponseItem(
      itemSimplified: SearchResultItemSimplified,
      projectId: Int
  ): Option[VSOnlineOutputMessage] = {
    try {
      val mediaTier = "ONLINE"
      val itemId = Option(itemSimplified.id)
      if (itemId.get != "") {
        logger.info(s"Vidispine item found: ${itemId.get}")
      }
      val likelyFile = itemSimplified.item.shape.headOption.flatMap(_.getLikelyFile)
      val filePath = likelyFile.flatMap(_.getAbsolutePath)
      if (filePath.isDefined) {
        logger.info(s"File path found at: ${filePath.get}")
      }
      val fileSize = likelyFile.flatMap(_.sizeOption)
      val projectIdAndContainingProjectIds = projectId +: itemSimplified.valuesForField("gnm_containing_projects", Some("Asset")).map(_.value).map(_.toInt)
      val nearlineId = itemSimplified
        .valuesForField("gnm_nearline_id", Some("Asset"))
        .headOption
        .map(_.value)
      val mediaCategory = itemSimplified
        .valuesForField("gnm_category", Some("Asset"))
        .headOption
        .map(_.value)
      (itemId, mediaCategory) match {
        case (Some(itemId), Some(mediaCategory)) =>
          Some(
            VSOnlineOutputMessage(
              mediaTier,
              projectIdAndContainingProjectIds,
              filePath,
              fileSize,
              Some(itemId),
              nearlineId,
              mediaCategory
            )
          )
        case _ =>
          logger.warn(s"VS response missing itemId ($itemId) and/or mediaCategory ($mediaCategory)")
          None
      }
    } catch {
      case throwable: Throwable =>
        logger.error(s"Got some kind of Throwable exception: ${throwable.getMessage}")
        None
    }
  }