28 lines
795 B
Swift
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
|
|
)
|
|
}
|
|
}
|