2023-01-05 11:55:20 +01:00
|
|
|
//
|
|
|
|
// https://mczachurski.dev
|
|
|
|
// Copyright © 2023 Marcin Czachurski and the repository contributors.
|
|
|
|
// Licensed under the MIT License.
|
|
|
|
//
|
|
|
|
|
|
|
|
import Foundation
|
|
|
|
import MastodonSwift
|
|
|
|
|
|
|
|
extension Status {
|
|
|
|
func createStatusData() async throws -> StatusData {
|
|
|
|
let statusData = StatusDataHandler.shared.createStatusDataEntity(viewContext: CoreDataHandler.memory.container.viewContext)
|
|
|
|
statusData.copyFrom(self)
|
|
|
|
|
|
|
|
for attachment in self.mediaAttachments {
|
|
|
|
let imageData = try await RemoteFileService.shared.fetchData(url: attachment.url)
|
|
|
|
|
|
|
|
guard let imageData = imageData else {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
// Save attachment in database.
|
|
|
|
let attachmentData = AttachmentDataHandler.shared.createAttachmnentDataEntity(viewContext: CoreDataHandler.memory.container.viewContext)
|
|
|
|
|
|
|
|
attachmentData.copyFrom(attachment)
|
|
|
|
attachmentData.statusId = statusData.id
|
|
|
|
attachmentData.data = imageData
|
|
|
|
|
2023-01-08 14:50:37 +01:00
|
|
|
// Read exif information.
|
|
|
|
if let exifProperties = imageData.getExifData() {
|
|
|
|
if let make = exifProperties.getExifValue("Make"), let model = exifProperties.getExifValue("Model") {
|
|
|
|
attachmentData.exifCamera = "\(make) \(model)"
|
|
|
|
}
|
|
|
|
|
|
|
|
// "Lens" or "Lens Model"
|
|
|
|
if let lens = exifProperties.getExifValue("Lens") {
|
|
|
|
attachmentData.exifLens = lens
|
|
|
|
}
|
|
|
|
|
|
|
|
if let createData = exifProperties.getExifValue("CreateDate") {
|
|
|
|
attachmentData.exifCreatedDate = createData
|
|
|
|
}
|
|
|
|
|
|
|
|
if let focalLenIn35mmFilm = exifProperties.getExifValue("FocalLenIn35mmFilm"),
|
|
|
|
let fNumber = exifProperties.getExifValue("FNumber")?.calculateExifNumber(),
|
|
|
|
let exposureTime = exifProperties.getExifValue("ExposureTime"),
|
|
|
|
let photographicSensitivity = exifProperties.getExifValue("PhotographicSensitivity") {
|
|
|
|
attachmentData.exifExposure = "\(focalLenIn35mmFilm)mm, f/\(fNumber), \(exposureTime)s, ISO \(photographicSensitivity)"
|
|
|
|
}
|
|
|
|
}
|
2023-01-05 11:55:20 +01:00
|
|
|
|
|
|
|
attachmentData.statusRelation = statusData
|
|
|
|
statusData.addToAttachmentRelation(attachmentData)
|
|
|
|
}
|
|
|
|
|
|
|
|
return statusData
|
|
|
|
}
|
|
|
|
}
|