in api/src/main/scala/com/gu/adapters/http/AvatarServlet.scala [241:262]
def uploadAvatar(request: RichRequest, user: User, fileParams: FileSingleParams): Either[Error, CreatedAvatar] = {
request.contentType match {
case Some("application/json") | Some("text/json") =>
for {
req <- avatarRequestFromBody(request.body)
bytesAndMimeType <- getImageFromUrl(req.url)
(bytes, mimeType) = bytesAndMimeType
upload <- store.userUpload(user, bytes, mimeType, req.url, req.isSocial)
} yield upload
case Some(s) if s startsWith "multipart/form-data" =>
for {
bytesAndMimeTypeAndFname <- getImageFromFile(fileParams)
(bytes, mimeType, fname) = bytesAndMimeTypeAndFname
isSocial <- getIsSocial(request.parameters.get("isSocial"))
upload <- store.userUpload(user, bytes, mimeType, fname, isSocial)
} yield upload
case Some(invalid) =>
Left(invalidContentType(List(s"'$invalid' is not a valid content type.")))
case None =>
Left(invalidContentType(List("No content type specified.")))
}
}