Skip to content

Commit

Permalink
Merge pull request #4306 from bbc/t1804-restrict-download-modifications
Browse files Browse the repository at this point in the history
T1804 restrict download modifications
  • Loading branch information
dblatcher authored Aug 5, 2024
2 parents f5dfd9b + 80e587f commit ee96556
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions media-api/app/lib/ImageResponse.scala
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,9 @@ class ImageResponse(config: MediaApiConfig, s3Client: S3Client, usageQuota: Usag
val valid = ImageExtras.isValid(validityMap)
val invalidReasons = ImageExtras.invalidReasons(validityMap, config.customValidityDescription)

val downloadableMap = ImageExtras.downloadableMap(image, withWritePermission)
val downloadableMap = checkDownloadRestrictions(source, ImageExtras.downloadableMap(image, withWritePermission), withWritePermission)
val isDownloadable = ImageExtras.isValid(downloadableMap)


val persistenceReasons = imagePersistenceReasons(image)
val isPersisted = persistenceReasons.nonEmpty

Expand Down Expand Up @@ -298,6 +297,19 @@ class ImageResponse(config: MediaApiConfig, s3Client: S3Client, usageQuota: Usag
}
}

private def checkDownloadRestrictions(source: JsValue, validityMap: Map[String, ValidityCheck], writePermissions: Boolean) : Map[String, ValidityCheck] = {
(source \ "usageRights" \ "category") match {
case JsDefined(category) =>
if (customUsageRestrictions.contains(category.as[String]) && !writePermissions) {
validityMap.updated("conditional_paid", ValidityCheck(true, validityMap("conditional_paid").overrideable, validityMap("conditional_paid").shouldOverride))
.updated("paid_image", ValidityCheck(true, validityMap("paid_image").overrideable, validityMap("paid_image").shouldOverride))
} else {
validityMap
}
case _ => validityMap
}
}

import play.api.libs.json.JodaWrites._

def imageResponseWrites(id: String, expandFileMetaData: Boolean): OWrites[Image] = (
Expand Down

0 comments on commit ee96556

Please sign in to comment.