TM-SGNL-iOS/SignalServiceKit/Upload/UploadShims.swift
TeleMessage developers dde0620daf initial commit
2025-05-03 12:28:28 -07:00

60 lines
1.9 KiB
Swift

//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Foundation
extension Upload {
public enum Shims {
public typealias AttachmentEncrypter = _Upload_AttachmentEncrypterShim
public typealias FileSystem = _Upload_FileSystemShim
}
public enum Wrappers {
public typealias AttachmentEncrypter = _Upload_AttachmentEncrypterWrapper
public typealias FileSystem = _Upload_FileSystemWrapper
}
}
// MARK: - Shims
public protocol _Upload_AttachmentEncrypterShim {
func encryptAttachment(at unencryptedUrl: URL, output encryptedUrl: URL) throws -> EncryptionMetadata
func decryptAttachment(at encryptedUrl: URL, metadata: EncryptionMetadata, output: URL) throws
}
public protocol _Upload_FileSystemShim {
func temporaryFileUrl() -> URL
func deleteFile(url: URL) throws
func createTempFileSlice(url: URL, start: Int) throws -> (URL, Int)
}
// MARK: - Wrappers
public struct _Upload_AttachmentEncrypterWrapper: Upload.Shims.AttachmentEncrypter {
public func encryptAttachment(at unencryptedUrl: URL, output encryptedUrl: URL) throws -> EncryptionMetadata {
try Cryptography.encryptAttachment(at: unencryptedUrl, output: encryptedUrl)
}
public func decryptAttachment(at encryptedUrl: URL, metadata: EncryptionMetadata, output: URL) throws {
try Cryptography.decryptAttachment(at: encryptedUrl, metadata: metadata, output: output)
}
}
public struct _Upload_FileSystemWrapper: Upload.Shims.FileSystem {
public func temporaryFileUrl() -> URL {
return OWSFileSystem.temporaryFileUrl(isAvailableWhileDeviceLocked: true)
}
public func deleteFile(url: URL) throws {
try OWSFileSystem.deleteFile(url: url)
}
public func createTempFileSlice(url: URL, start: Int) throws -> (URL, Int) {
return try OWSFileSystem.createTempFileSlice(url: url, start: start)
}
}