velody/packages/apple/VelodyPersistence/Sources/VelodyPersistence/LocalTrackArtworkUploadPayloadBuilder.swift
2026-05-31 01:20:56 +02:00

28 lines
795 B
Swift

import Foundation
import VelodyDomain
public actor LocalTrackArtworkUploadPayloadBuilder {
private let artworkStore: any LocalArtworkStore
public init(artworkStore: any LocalArtworkStore) {
self.artworkStore = artworkStore
}
public func makePayload(
for artwork: LocalTrackArtwork?
) async throws -> UploadFinalizeRequest.ArtworkPayload? {
guard let artwork else {
return nil
}
let data = try await artworkStore.readArtwork(at: artwork.localFilePath)
return UploadFinalizeRequest.ArtworkPayload(
dataBase64: data.base64EncodedString(),
sha256: artwork.sha256,
mimeType: artwork.mimeType,
width: artwork.width,
height: artwork.height
)
}
}