mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Refactoring
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import Foundation
|
||||
import Postbox
|
||||
import TelegramApi
|
||||
|
||||
import SyncCore
|
||||
|
||||
protocol TelegramCloudMediaResource: TelegramMediaResource {
|
||||
func apiInputLocation(fileReference: Data?) -> Api.InputFileLocation?
|
||||
}
|
||||
|
||||
protocol TelegramMultipartFetchableResource: TelegramMediaResource {
|
||||
var datacenterId: Int { get }
|
||||
}
|
||||
|
||||
public protocol TelegramCloudMediaResourceWithFileReference {
|
||||
var fileReference: Data? { get }
|
||||
}
|
||||
|
||||
extension CloudFileMediaResource: TelegramCloudMediaResource, TelegramMultipartFetchableResource, TelegramCloudMediaResourceWithFileReference {
|
||||
func apiInputLocation(fileReference: Data?) -> Api.InputFileLocation? {
|
||||
return Api.InputFileLocation.inputFileLocation(volumeId: self.volumeId, localId: self.localId, secret: self.secret, fileReference: Buffer(data: fileReference ?? Data()))
|
||||
}
|
||||
}
|
||||
|
||||
extension CloudPhotoSizeMediaResource: TelegramCloudMediaResource, TelegramMultipartFetchableResource, TelegramCloudMediaResourceWithFileReference {
|
||||
func apiInputLocation(fileReference: Data?) -> Api.InputFileLocation? {
|
||||
return Api.InputFileLocation.inputPhotoFileLocation(id: self.photoId, accessHash: self.accessHash, fileReference: Buffer(data: fileReference ?? Data()), thumbSize: self.sizeSpec)
|
||||
}
|
||||
}
|
||||
|
||||
extension CloudDocumentSizeMediaResource: TelegramCloudMediaResource, TelegramMultipartFetchableResource, TelegramCloudMediaResourceWithFileReference {
|
||||
func apiInputLocation(fileReference: Data?) -> Api.InputFileLocation? {
|
||||
return Api.InputFileLocation.inputDocumentFileLocation(id: self.documentId, accessHash: self.accessHash, fileReference: Buffer(data: fileReference ?? Data()), thumbSize: self.sizeSpec)
|
||||
}
|
||||
}
|
||||
|
||||
extension CloudPeerPhotoSizeMediaResource: TelegramMultipartFetchableResource {
|
||||
func apiInputLocation(peerReference: PeerReference) -> Api.InputFileLocation? {
|
||||
let flags: Int32
|
||||
switch self.sizeSpec {
|
||||
case .small:
|
||||
flags = 0
|
||||
case .fullSize:
|
||||
flags = 1 << 0
|
||||
}
|
||||
if let photoId = self.photoId {
|
||||
return Api.InputFileLocation.inputPeerPhotoFileLocation(flags: flags, peer: peerReference.inputPeer, photoId: photoId)
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension CloudStickerPackThumbnailMediaResource: TelegramMultipartFetchableResource {
|
||||
func apiInputLocation(packReference: StickerPackReference) -> Api.InputFileLocation? {
|
||||
if let thumbVersion = self.thumbVersion {
|
||||
return Api.InputFileLocation.inputStickerSetThumb(stickerset: packReference.apiInputStickerSet, thumbVersion: thumbVersion)
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension CloudDocumentMediaResource: TelegramCloudMediaResource, TelegramMultipartFetchableResource, TelegramCloudMediaResourceWithFileReference {
|
||||
func apiInputLocation(fileReference: Data?) -> Api.InputFileLocation? {
|
||||
return Api.InputFileLocation.inputDocumentFileLocation(id: self.fileId, accessHash: self.accessHash, fileReference: Buffer(data: fileReference ?? Data()), thumbSize: "")
|
||||
}
|
||||
}
|
||||
|
||||
extension SecretFileMediaResource: TelegramCloudMediaResource, TelegramMultipartFetchableResource {
|
||||
func apiInputLocation(fileReference: Data?) -> Api.InputFileLocation? {
|
||||
return .inputEncryptedFileLocation(id: self.fileId, accessHash: self.accessHash)
|
||||
}
|
||||
}
|
||||
|
||||
extension WebFileReferenceMediaResource {
|
||||
var apiInputLocation: Api.InputWebFileLocation {
|
||||
return .inputWebFileLocation(url: self.url, accessHash: self.accessHash)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user