mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
835 lines
35 KiB
Swift
835 lines
35 KiB
Swift
|
|
fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
|
|
var dict: [Int32 : (BufferReader) -> Any?] = [:]
|
|
dict[-1471112230] = { return $0.readInt32() }
|
|
dict[570911930] = { return $0.readInt64() }
|
|
dict[571523412] = { return $0.readDouble() }
|
|
dict[-1255641564] = { return parseString($0) }
|
|
dict[590459437] = { return Api.Photo.parse_photoEmpty($0) }
|
|
dict[-797637467] = { return Api.Photo.parse_photo($0) }
|
|
dict[236446268] = { return Api.PhotoSize.parse_photoSizeEmpty($0) }
|
|
dict[2009052699] = { return Api.PhotoSize.parse_photoSize($0) }
|
|
dict[-374917894] = { return Api.PhotoSize.parse_photoCachedSize($0) }
|
|
dict[-525288402] = { return Api.PhotoSize.parse_photoStrippedSize($0) }
|
|
dict[-1132476723] = { return Api.FileLocation.parse_fileLocationToBeDeprecated($0) }
|
|
dict[1815593308] = { return Api.DocumentAttribute.parse_documentAttributeImageSize($0) }
|
|
dict[297109817] = { return Api.DocumentAttribute.parse_documentAttributeAnimated($0) }
|
|
dict[1662637586] = { return Api.DocumentAttribute.parse_documentAttributeSticker($0) }
|
|
dict[250621158] = { return Api.DocumentAttribute.parse_documentAttributeVideo($0) }
|
|
dict[-1739392570] = { return Api.DocumentAttribute.parse_documentAttributeAudio($0) }
|
|
dict[358154344] = { return Api.DocumentAttribute.parse_documentAttributeFilename($0) }
|
|
dict[-1744710921] = { return Api.DocumentAttribute.parse_documentAttributeHasStickers($0) }
|
|
dict[-4838507] = { return Api.InputStickerSet.parse_inputStickerSetEmpty($0) }
|
|
dict[-1645763991] = { return Api.InputStickerSet.parse_inputStickerSetID($0) }
|
|
dict[-2044933984] = { return Api.InputStickerSet.parse_inputStickerSetShortName($0) }
|
|
dict[1075322878] = { return Api.InputFileLocation.parse_inputPhotoFileLocation($0) }
|
|
dict[-1160743548] = { return Api.InputFileLocation.parse_inputDocumentFileLocation($0) }
|
|
dict[-1361650766] = { return Api.MaskCoords.parse_maskCoords($0) }
|
|
dict[-1683841855] = { return Api.Document.parse_document($0) }
|
|
return dict
|
|
}()
|
|
|
|
struct Api {
|
|
static func parse(_ buffer: Buffer) -> Any? {
|
|
let reader = BufferReader(buffer)
|
|
if let signature = reader.readInt32() {
|
|
return parse(reader, signature: signature)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
static func parse(_ reader: BufferReader, signature: Int32) -> Any? {
|
|
if let parser = parsers[signature] {
|
|
return parser(reader)
|
|
}
|
|
else {
|
|
//Logger.shared.log("TL", "Type constructor \(String(signature, radix: 16, uppercase: false)) not found")
|
|
return nil
|
|
}
|
|
}
|
|
|
|
static func parseVector<T>(_ reader: BufferReader, elementSignature: Int32, elementType: T.Type) -> [T]? {
|
|
if let count = reader.readInt32() {
|
|
var array = [T]()
|
|
var i: Int32 = 0
|
|
while i < count {
|
|
var signature = elementSignature
|
|
if elementSignature == 0 {
|
|
if let unboxedSignature = reader.readInt32() {
|
|
signature = unboxedSignature
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
if elementType == Buffer.self {
|
|
if let item = parseBytes(reader) as? T {
|
|
array.append(item)
|
|
} else {
|
|
return nil
|
|
}
|
|
} else {
|
|
if let item = Api.parse(reader, signature: signature) as? T {
|
|
array.append(item)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
i += 1
|
|
}
|
|
return array
|
|
}
|
|
return nil
|
|
}
|
|
|
|
static func serializeObject(_ object: Any, buffer: Buffer, boxed: Swift.Bool) {
|
|
switch object {
|
|
case let _1 as Api.Photo:
|
|
_1.serialize(buffer, boxed)
|
|
case let _1 as Api.PhotoSize:
|
|
_1.serialize(buffer, boxed)
|
|
case let _1 as Api.FileLocation:
|
|
_1.serialize(buffer, boxed)
|
|
case let _1 as Api.DocumentAttribute:
|
|
_1.serialize(buffer, boxed)
|
|
case let _1 as Api.InputStickerSet:
|
|
_1.serialize(buffer, boxed)
|
|
case let _1 as Api.InputFileLocation:
|
|
_1.serialize(buffer, boxed)
|
|
case let _1 as Api.MaskCoords:
|
|
_1.serialize(buffer, boxed)
|
|
case let _1 as Api.Document:
|
|
_1.serialize(buffer, boxed)
|
|
default:
|
|
break
|
|
}
|
|
}
|
|
|
|
}
|
|
extension Api {
|
|
enum Photo: TypeConstructorDescription {
|
|
case photoEmpty(id: Int64)
|
|
case photo(flags: Int32, id: Int64, accessHash: Int64, fileReference: Buffer, date: Int32, sizes: [Api.PhotoSize], dcId: Int32)
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .photoEmpty(let id):
|
|
if boxed {
|
|
buffer.appendInt32(590459437)
|
|
}
|
|
serializeInt64(id, buffer: buffer, boxed: false)
|
|
break
|
|
case .photo(let flags, let id, let accessHash, let fileReference, let date, let sizes, let dcId):
|
|
if boxed {
|
|
buffer.appendInt32(-797637467)
|
|
}
|
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
serializeInt64(id, buffer: buffer, boxed: false)
|
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
serializeBytes(fileReference, buffer: buffer, boxed: false)
|
|
serializeInt32(date, buffer: buffer, boxed: false)
|
|
buffer.appendInt32(481674261)
|
|
buffer.appendInt32(Int32(sizes.count))
|
|
for item in sizes {
|
|
item.serialize(buffer, true)
|
|
}
|
|
serializeInt32(dcId, buffer: buffer, boxed: false)
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .photoEmpty(let id):
|
|
return ("photoEmpty", [("id", id)])
|
|
case .photo(let flags, let id, let accessHash, let fileReference, let date, let sizes, let dcId):
|
|
return ("photo", [("flags", flags), ("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("date", date), ("sizes", sizes), ("dcId", dcId)])
|
|
}
|
|
}
|
|
|
|
static func parse_photoEmpty(_ reader: BufferReader) -> Photo? {
|
|
var _1: Int64?
|
|
_1 = reader.readInt64()
|
|
let _c1 = _1 != nil
|
|
if _c1 {
|
|
return Api.Photo.photoEmpty(id: _1!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_photo(_ reader: BufferReader) -> Photo? {
|
|
var _1: Int32?
|
|
_1 = reader.readInt32()
|
|
var _2: Int64?
|
|
_2 = reader.readInt64()
|
|
var _3: Int64?
|
|
_3 = reader.readInt64()
|
|
var _4: Buffer?
|
|
_4 = parseBytes(reader)
|
|
var _5: Int32?
|
|
_5 = reader.readInt32()
|
|
var _6: [Api.PhotoSize]?
|
|
if let _ = reader.readInt32() {
|
|
_6 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PhotoSize.self)
|
|
}
|
|
var _7: Int32?
|
|
_7 = reader.readInt32()
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
let _c5 = _5 != nil
|
|
let _c6 = _6 != nil
|
|
let _c7 = _7 != nil
|
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 {
|
|
return Api.Photo.photo(flags: _1!, id: _2!, accessHash: _3!, fileReference: _4!, date: _5!, sizes: _6!, dcId: _7!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
}
|
|
enum PhotoSize: TypeConstructorDescription {
|
|
case photoSizeEmpty(type: String)
|
|
case photoSize(type: String, location: Api.FileLocation, w: Int32, h: Int32, size: Int32)
|
|
case photoCachedSize(type: String, location: Api.FileLocation, w: Int32, h: Int32, bytes: Buffer)
|
|
case photoStrippedSize(type: String, bytes: Buffer)
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .photoSizeEmpty(let type):
|
|
if boxed {
|
|
buffer.appendInt32(236446268)
|
|
}
|
|
serializeString(type, buffer: buffer, boxed: false)
|
|
break
|
|
case .photoSize(let type, let location, let w, let h, let size):
|
|
if boxed {
|
|
buffer.appendInt32(2009052699)
|
|
}
|
|
serializeString(type, buffer: buffer, boxed: false)
|
|
location.serialize(buffer, true)
|
|
serializeInt32(w, buffer: buffer, boxed: false)
|
|
serializeInt32(h, buffer: buffer, boxed: false)
|
|
serializeInt32(size, buffer: buffer, boxed: false)
|
|
break
|
|
case .photoCachedSize(let type, let location, let w, let h, let bytes):
|
|
if boxed {
|
|
buffer.appendInt32(-374917894)
|
|
}
|
|
serializeString(type, buffer: buffer, boxed: false)
|
|
location.serialize(buffer, true)
|
|
serializeInt32(w, buffer: buffer, boxed: false)
|
|
serializeInt32(h, buffer: buffer, boxed: false)
|
|
serializeBytes(bytes, buffer: buffer, boxed: false)
|
|
break
|
|
case .photoStrippedSize(let type, let bytes):
|
|
if boxed {
|
|
buffer.appendInt32(-525288402)
|
|
}
|
|
serializeString(type, buffer: buffer, boxed: false)
|
|
serializeBytes(bytes, buffer: buffer, boxed: false)
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .photoSizeEmpty(let type):
|
|
return ("photoSizeEmpty", [("type", type)])
|
|
case .photoSize(let type, let location, let w, let h, let size):
|
|
return ("photoSize", [("type", type), ("location", location), ("w", w), ("h", h), ("size", size)])
|
|
case .photoCachedSize(let type, let location, let w, let h, let bytes):
|
|
return ("photoCachedSize", [("type", type), ("location", location), ("w", w), ("h", h), ("bytes", bytes)])
|
|
case .photoStrippedSize(let type, let bytes):
|
|
return ("photoStrippedSize", [("type", type), ("bytes", bytes)])
|
|
}
|
|
}
|
|
|
|
static func parse_photoSizeEmpty(_ reader: BufferReader) -> PhotoSize? {
|
|
var _1: String?
|
|
_1 = parseString(reader)
|
|
let _c1 = _1 != nil
|
|
if _c1 {
|
|
return Api.PhotoSize.photoSizeEmpty(type: _1!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_photoSize(_ reader: BufferReader) -> PhotoSize? {
|
|
var _1: String?
|
|
_1 = parseString(reader)
|
|
var _2: Api.FileLocation?
|
|
if let signature = reader.readInt32() {
|
|
_2 = Api.parse(reader, signature: signature) as? Api.FileLocation
|
|
}
|
|
var _3: Int32?
|
|
_3 = reader.readInt32()
|
|
var _4: Int32?
|
|
_4 = reader.readInt32()
|
|
var _5: Int32?
|
|
_5 = reader.readInt32()
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
let _c5 = _5 != nil
|
|
if _c1 && _c2 && _c3 && _c4 && _c5 {
|
|
return Api.PhotoSize.photoSize(type: _1!, location: _2!, w: _3!, h: _4!, size: _5!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_photoCachedSize(_ reader: BufferReader) -> PhotoSize? {
|
|
var _1: String?
|
|
_1 = parseString(reader)
|
|
var _2: Api.FileLocation?
|
|
if let signature = reader.readInt32() {
|
|
_2 = Api.parse(reader, signature: signature) as? Api.FileLocation
|
|
}
|
|
var _3: Int32?
|
|
_3 = reader.readInt32()
|
|
var _4: Int32?
|
|
_4 = reader.readInt32()
|
|
var _5: Buffer?
|
|
_5 = parseBytes(reader)
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
let _c5 = _5 != nil
|
|
if _c1 && _c2 && _c3 && _c4 && _c5 {
|
|
return Api.PhotoSize.photoCachedSize(type: _1!, location: _2!, w: _3!, h: _4!, bytes: _5!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_photoStrippedSize(_ reader: BufferReader) -> PhotoSize? {
|
|
var _1: String?
|
|
_1 = parseString(reader)
|
|
var _2: Buffer?
|
|
_2 = parseBytes(reader)
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
if _c1 && _c2 {
|
|
return Api.PhotoSize.photoStrippedSize(type: _1!, bytes: _2!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
}
|
|
enum FileLocation: TypeConstructorDescription {
|
|
case fileLocationToBeDeprecated(volumeId: Int64, localId: Int32)
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .fileLocationToBeDeprecated(let volumeId, let localId):
|
|
if boxed {
|
|
buffer.appendInt32(-1132476723)
|
|
}
|
|
serializeInt64(volumeId, buffer: buffer, boxed: false)
|
|
serializeInt32(localId, buffer: buffer, boxed: false)
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .fileLocationToBeDeprecated(let volumeId, let localId):
|
|
return ("fileLocationToBeDeprecated", [("volumeId", volumeId), ("localId", localId)])
|
|
}
|
|
}
|
|
|
|
static func parse_fileLocationToBeDeprecated(_ reader: BufferReader) -> FileLocation? {
|
|
var _1: Int64?
|
|
_1 = reader.readInt64()
|
|
var _2: Int32?
|
|
_2 = reader.readInt32()
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
if _c1 && _c2 {
|
|
return Api.FileLocation.fileLocationToBeDeprecated(volumeId: _1!, localId: _2!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
}
|
|
enum DocumentAttribute: TypeConstructorDescription {
|
|
case documentAttributeImageSize(w: Int32, h: Int32)
|
|
case documentAttributeAnimated
|
|
case documentAttributeSticker(flags: Int32, alt: String, stickerset: Api.InputStickerSet, maskCoords: Api.MaskCoords?)
|
|
case documentAttributeVideo(flags: Int32, duration: Int32, w: Int32, h: Int32)
|
|
case documentAttributeAudio(flags: Int32, duration: Int32, title: String?, performer: String?, waveform: Buffer?)
|
|
case documentAttributeFilename(fileName: String)
|
|
case documentAttributeHasStickers
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .documentAttributeImageSize(let w, let h):
|
|
if boxed {
|
|
buffer.appendInt32(1815593308)
|
|
}
|
|
serializeInt32(w, buffer: buffer, boxed: false)
|
|
serializeInt32(h, buffer: buffer, boxed: false)
|
|
break
|
|
case .documentAttributeAnimated:
|
|
if boxed {
|
|
buffer.appendInt32(297109817)
|
|
}
|
|
|
|
break
|
|
case .documentAttributeSticker(let flags, let alt, let stickerset, let maskCoords):
|
|
if boxed {
|
|
buffer.appendInt32(1662637586)
|
|
}
|
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
serializeString(alt, buffer: buffer, boxed: false)
|
|
stickerset.serialize(buffer, true)
|
|
if Int(flags) & Int(1 << 0) != 0 {maskCoords!.serialize(buffer, true)}
|
|
break
|
|
case .documentAttributeVideo(let flags, let duration, let w, let h):
|
|
if boxed {
|
|
buffer.appendInt32(250621158)
|
|
}
|
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
serializeInt32(duration, buffer: buffer, boxed: false)
|
|
serializeInt32(w, buffer: buffer, boxed: false)
|
|
serializeInt32(h, buffer: buffer, boxed: false)
|
|
break
|
|
case .documentAttributeAudio(let flags, let duration, let title, let performer, let waveform):
|
|
if boxed {
|
|
buffer.appendInt32(-1739392570)
|
|
}
|
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
serializeInt32(duration, buffer: buffer, boxed: false)
|
|
if Int(flags) & Int(1 << 0) != 0 {serializeString(title!, buffer: buffer, boxed: false)}
|
|
if Int(flags) & Int(1 << 1) != 0 {serializeString(performer!, buffer: buffer, boxed: false)}
|
|
if Int(flags) & Int(1 << 2) != 0 {serializeBytes(waveform!, buffer: buffer, boxed: false)}
|
|
break
|
|
case .documentAttributeFilename(let fileName):
|
|
if boxed {
|
|
buffer.appendInt32(358154344)
|
|
}
|
|
serializeString(fileName, buffer: buffer, boxed: false)
|
|
break
|
|
case .documentAttributeHasStickers:
|
|
if boxed {
|
|
buffer.appendInt32(-1744710921)
|
|
}
|
|
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .documentAttributeImageSize(let w, let h):
|
|
return ("documentAttributeImageSize", [("w", w), ("h", h)])
|
|
case .documentAttributeAnimated:
|
|
return ("documentAttributeAnimated", [])
|
|
case .documentAttributeSticker(let flags, let alt, let stickerset, let maskCoords):
|
|
return ("documentAttributeSticker", [("flags", flags), ("alt", alt), ("stickerset", stickerset), ("maskCoords", maskCoords)])
|
|
case .documentAttributeVideo(let flags, let duration, let w, let h):
|
|
return ("documentAttributeVideo", [("flags", flags), ("duration", duration), ("w", w), ("h", h)])
|
|
case .documentAttributeAudio(let flags, let duration, let title, let performer, let waveform):
|
|
return ("documentAttributeAudio", [("flags", flags), ("duration", duration), ("title", title), ("performer", performer), ("waveform", waveform)])
|
|
case .documentAttributeFilename(let fileName):
|
|
return ("documentAttributeFilename", [("fileName", fileName)])
|
|
case .documentAttributeHasStickers:
|
|
return ("documentAttributeHasStickers", [])
|
|
}
|
|
}
|
|
|
|
static func parse_documentAttributeImageSize(_ reader: BufferReader) -> DocumentAttribute? {
|
|
var _1: Int32?
|
|
_1 = reader.readInt32()
|
|
var _2: Int32?
|
|
_2 = reader.readInt32()
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
if _c1 && _c2 {
|
|
return Api.DocumentAttribute.documentAttributeImageSize(w: _1!, h: _2!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_documentAttributeAnimated(_ reader: BufferReader) -> DocumentAttribute? {
|
|
return Api.DocumentAttribute.documentAttributeAnimated
|
|
}
|
|
static func parse_documentAttributeSticker(_ reader: BufferReader) -> DocumentAttribute? {
|
|
var _1: Int32?
|
|
_1 = reader.readInt32()
|
|
var _2: String?
|
|
_2 = parseString(reader)
|
|
var _3: Api.InputStickerSet?
|
|
if let signature = reader.readInt32() {
|
|
_3 = Api.parse(reader, signature: signature) as? Api.InputStickerSet
|
|
}
|
|
var _4: Api.MaskCoords?
|
|
if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() {
|
|
_4 = Api.parse(reader, signature: signature) as? Api.MaskCoords
|
|
} }
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = (Int(_1!) & Int(1 << 0) == 0) || _4 != nil
|
|
if _c1 && _c2 && _c3 && _c4 {
|
|
return Api.DocumentAttribute.documentAttributeSticker(flags: _1!, alt: _2!, stickerset: _3!, maskCoords: _4)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_documentAttributeVideo(_ reader: BufferReader) -> DocumentAttribute? {
|
|
var _1: Int32?
|
|
_1 = reader.readInt32()
|
|
var _2: Int32?
|
|
_2 = reader.readInt32()
|
|
var _3: Int32?
|
|
_3 = reader.readInt32()
|
|
var _4: Int32?
|
|
_4 = reader.readInt32()
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
if _c1 && _c2 && _c3 && _c4 {
|
|
return Api.DocumentAttribute.documentAttributeVideo(flags: _1!, duration: _2!, w: _3!, h: _4!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_documentAttributeAudio(_ reader: BufferReader) -> DocumentAttribute? {
|
|
var _1: Int32?
|
|
_1 = reader.readInt32()
|
|
var _2: Int32?
|
|
_2 = reader.readInt32()
|
|
var _3: String?
|
|
if Int(_1!) & Int(1 << 0) != 0 {_3 = parseString(reader) }
|
|
var _4: String?
|
|
if Int(_1!) & Int(1 << 1) != 0 {_4 = parseString(reader) }
|
|
var _5: Buffer?
|
|
if Int(_1!) & Int(1 << 2) != 0 {_5 = parseBytes(reader) }
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil
|
|
let _c4 = (Int(_1!) & Int(1 << 1) == 0) || _4 != nil
|
|
let _c5 = (Int(_1!) & Int(1 << 2) == 0) || _5 != nil
|
|
if _c1 && _c2 && _c3 && _c4 && _c5 {
|
|
return Api.DocumentAttribute.documentAttributeAudio(flags: _1!, duration: _2!, title: _3, performer: _4, waveform: _5)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_documentAttributeFilename(_ reader: BufferReader) -> DocumentAttribute? {
|
|
var _1: String?
|
|
_1 = parseString(reader)
|
|
let _c1 = _1 != nil
|
|
if _c1 {
|
|
return Api.DocumentAttribute.documentAttributeFilename(fileName: _1!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_documentAttributeHasStickers(_ reader: BufferReader) -> DocumentAttribute? {
|
|
return Api.DocumentAttribute.documentAttributeHasStickers
|
|
}
|
|
|
|
}
|
|
enum InputStickerSet: TypeConstructorDescription {
|
|
case inputStickerSetEmpty
|
|
case inputStickerSetID(id: Int64, accessHash: Int64)
|
|
case inputStickerSetShortName(shortName: String)
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .inputStickerSetEmpty:
|
|
if boxed {
|
|
buffer.appendInt32(-4838507)
|
|
}
|
|
|
|
break
|
|
case .inputStickerSetID(let id, let accessHash):
|
|
if boxed {
|
|
buffer.appendInt32(-1645763991)
|
|
}
|
|
serializeInt64(id, buffer: buffer, boxed: false)
|
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
break
|
|
case .inputStickerSetShortName(let shortName):
|
|
if boxed {
|
|
buffer.appendInt32(-2044933984)
|
|
}
|
|
serializeString(shortName, buffer: buffer, boxed: false)
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .inputStickerSetEmpty:
|
|
return ("inputStickerSetEmpty", [])
|
|
case .inputStickerSetID(let id, let accessHash):
|
|
return ("inputStickerSetID", [("id", id), ("accessHash", accessHash)])
|
|
case .inputStickerSetShortName(let shortName):
|
|
return ("inputStickerSetShortName", [("shortName", shortName)])
|
|
}
|
|
}
|
|
|
|
static func parse_inputStickerSetEmpty(_ reader: BufferReader) -> InputStickerSet? {
|
|
return Api.InputStickerSet.inputStickerSetEmpty
|
|
}
|
|
static func parse_inputStickerSetID(_ reader: BufferReader) -> InputStickerSet? {
|
|
var _1: Int64?
|
|
_1 = reader.readInt64()
|
|
var _2: Int64?
|
|
_2 = reader.readInt64()
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
if _c1 && _c2 {
|
|
return Api.InputStickerSet.inputStickerSetID(id: _1!, accessHash: _2!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_inputStickerSetShortName(_ reader: BufferReader) -> InputStickerSet? {
|
|
var _1: String?
|
|
_1 = parseString(reader)
|
|
let _c1 = _1 != nil
|
|
if _c1 {
|
|
return Api.InputStickerSet.inputStickerSetShortName(shortName: _1!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
}
|
|
enum InputFileLocation: TypeConstructorDescription {
|
|
case inputPhotoFileLocation(id: Int64, accessHash: Int64, fileReference: Buffer, thumbSize: String)
|
|
case inputDocumentFileLocation(id: Int64, accessHash: Int64, fileReference: Buffer, thumbSize: String)
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .inputPhotoFileLocation(let id, let accessHash, let fileReference, let thumbSize):
|
|
if boxed {
|
|
buffer.appendInt32(1075322878)
|
|
}
|
|
serializeInt64(id, buffer: buffer, boxed: false)
|
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
serializeBytes(fileReference, buffer: buffer, boxed: false)
|
|
serializeString(thumbSize, buffer: buffer, boxed: false)
|
|
break
|
|
case .inputDocumentFileLocation(let id, let accessHash, let fileReference, let thumbSize):
|
|
if boxed {
|
|
buffer.appendInt32(-1160743548)
|
|
}
|
|
serializeInt64(id, buffer: buffer, boxed: false)
|
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
serializeBytes(fileReference, buffer: buffer, boxed: false)
|
|
serializeString(thumbSize, buffer: buffer, boxed: false)
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .inputPhotoFileLocation(let id, let accessHash, let fileReference, let thumbSize):
|
|
return ("inputPhotoFileLocation", [("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("thumbSize", thumbSize)])
|
|
case .inputDocumentFileLocation(let id, let accessHash, let fileReference, let thumbSize):
|
|
return ("inputDocumentFileLocation", [("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("thumbSize", thumbSize)])
|
|
}
|
|
}
|
|
|
|
static func parse_inputPhotoFileLocation(_ reader: BufferReader) -> InputFileLocation? {
|
|
var _1: Int64?
|
|
_1 = reader.readInt64()
|
|
var _2: Int64?
|
|
_2 = reader.readInt64()
|
|
var _3: Buffer?
|
|
_3 = parseBytes(reader)
|
|
var _4: String?
|
|
_4 = parseString(reader)
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
if _c1 && _c2 && _c3 && _c4 {
|
|
return Api.InputFileLocation.inputPhotoFileLocation(id: _1!, accessHash: _2!, fileReference: _3!, thumbSize: _4!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
static func parse_inputDocumentFileLocation(_ reader: BufferReader) -> InputFileLocation? {
|
|
var _1: Int64?
|
|
_1 = reader.readInt64()
|
|
var _2: Int64?
|
|
_2 = reader.readInt64()
|
|
var _3: Buffer?
|
|
_3 = parseBytes(reader)
|
|
var _4: String?
|
|
_4 = parseString(reader)
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
if _c1 && _c2 && _c3 && _c4 {
|
|
return Api.InputFileLocation.inputDocumentFileLocation(id: _1!, accessHash: _2!, fileReference: _3!, thumbSize: _4!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
}
|
|
enum MaskCoords: TypeConstructorDescription {
|
|
case maskCoords(n: Int32, x: Double, y: Double, zoom: Double)
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .maskCoords(let n, let x, let y, let zoom):
|
|
if boxed {
|
|
buffer.appendInt32(-1361650766)
|
|
}
|
|
serializeInt32(n, buffer: buffer, boxed: false)
|
|
serializeDouble(x, buffer: buffer, boxed: false)
|
|
serializeDouble(y, buffer: buffer, boxed: false)
|
|
serializeDouble(zoom, buffer: buffer, boxed: false)
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .maskCoords(let n, let x, let y, let zoom):
|
|
return ("maskCoords", [("n", n), ("x", x), ("y", y), ("zoom", zoom)])
|
|
}
|
|
}
|
|
|
|
static func parse_maskCoords(_ reader: BufferReader) -> MaskCoords? {
|
|
var _1: Int32?
|
|
_1 = reader.readInt32()
|
|
var _2: Double?
|
|
_2 = reader.readDouble()
|
|
var _3: Double?
|
|
_3 = reader.readDouble()
|
|
var _4: Double?
|
|
_4 = reader.readDouble()
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
if _c1 && _c2 && _c3 && _c4 {
|
|
return Api.MaskCoords.maskCoords(n: _1!, x: _2!, y: _3!, zoom: _4!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
}
|
|
enum Document: TypeConstructorDescription {
|
|
case document(flags: Int32, id: Int64, accessHash: Int64, fileReference: Buffer, date: Int32, mimeType: String, size: Int32, thumbs: [Api.PhotoSize]?, dcId: Int32, attributes: [Api.DocumentAttribute])
|
|
|
|
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
|
|
switch self {
|
|
case .document(let flags, let id, let accessHash, let fileReference, let date, let mimeType, let size, let thumbs, let dcId, let attributes):
|
|
if boxed {
|
|
buffer.appendInt32(-1683841855)
|
|
}
|
|
serializeInt32(flags, buffer: buffer, boxed: false)
|
|
serializeInt64(id, buffer: buffer, boxed: false)
|
|
serializeInt64(accessHash, buffer: buffer, boxed: false)
|
|
serializeBytes(fileReference, buffer: buffer, boxed: false)
|
|
serializeInt32(date, buffer: buffer, boxed: false)
|
|
serializeString(mimeType, buffer: buffer, boxed: false)
|
|
serializeInt32(size, buffer: buffer, boxed: false)
|
|
if Int(flags) & Int(1 << 0) != 0 {buffer.appendInt32(481674261)
|
|
buffer.appendInt32(Int32(thumbs!.count))
|
|
for item in thumbs! {
|
|
item.serialize(buffer, true)
|
|
}}
|
|
serializeInt32(dcId, buffer: buffer, boxed: false)
|
|
buffer.appendInt32(481674261)
|
|
buffer.appendInt32(Int32(attributes.count))
|
|
for item in attributes {
|
|
item.serialize(buffer, true)
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
func descriptionFields() -> (String, [(String, Any)]) {
|
|
switch self {
|
|
case .document(let flags, let id, let accessHash, let fileReference, let date, let mimeType, let size, let thumbs, let dcId, let attributes):
|
|
return ("document", [("flags", flags), ("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("date", date), ("mimeType", mimeType), ("size", size), ("thumbs", thumbs), ("dcId", dcId), ("attributes", attributes)])
|
|
}
|
|
}
|
|
|
|
static func parse_document(_ reader: BufferReader) -> Document? {
|
|
var _1: Int32?
|
|
_1 = reader.readInt32()
|
|
var _2: Int64?
|
|
_2 = reader.readInt64()
|
|
var _3: Int64?
|
|
_3 = reader.readInt64()
|
|
var _4: Buffer?
|
|
_4 = parseBytes(reader)
|
|
var _5: Int32?
|
|
_5 = reader.readInt32()
|
|
var _6: String?
|
|
_6 = parseString(reader)
|
|
var _7: Int32?
|
|
_7 = reader.readInt32()
|
|
var _8: [Api.PhotoSize]?
|
|
if Int(_1!) & Int(1 << 0) != 0 {if let _ = reader.readInt32() {
|
|
_8 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PhotoSize.self)
|
|
} }
|
|
var _9: Int32?
|
|
_9 = reader.readInt32()
|
|
var _10: [Api.DocumentAttribute]?
|
|
if let _ = reader.readInt32() {
|
|
_10 = Api.parseVector(reader, elementSignature: 0, elementType: Api.DocumentAttribute.self)
|
|
}
|
|
let _c1 = _1 != nil
|
|
let _c2 = _2 != nil
|
|
let _c3 = _3 != nil
|
|
let _c4 = _4 != nil
|
|
let _c5 = _5 != nil
|
|
let _c6 = _6 != nil
|
|
let _c7 = _7 != nil
|
|
let _c8 = (Int(_1!) & Int(1 << 0) == 0) || _8 != nil
|
|
let _c9 = _9 != nil
|
|
let _c10 = _10 != nil
|
|
if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 {
|
|
return Api.Document.document(flags: _1!, id: _2!, accessHash: _3!, fileReference: _4!, date: _5!, mimeType: _6!, size: _7!, thumbs: _8, dcId: _9!, attributes: _10!)
|
|
}
|
|
else {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
extension Api {
|
|
struct functions {
|
|
|
|
}
|
|
}
|