Update API

This commit is contained in:
Ali 2021-07-01 00:45:12 +04:00
parent 3d4d0cc64d
commit f6120cfead
6 changed files with 47 additions and 24 deletions

View File

@ -72,6 +72,26 @@ public struct ProxyServerSettings: PostboxCoding, Equatable, Hashable {
} }
} }
private func dataWithHexString(_ string: String) -> Data {
var hex = string
if hex.count % 2 != 0 {
return Data()
}
var data = Data()
while hex.count > 0 {
let subIndex = hex.index(hex.startIndex, offsetBy: 2)
let c = String(hex[..<subIndex])
hex = String(hex[subIndex...])
var ch: UInt32 = 0
if !Scanner(string: c).scanHexInt32(&ch) {
return Data()
}
var char = UInt8(ch)
data.append(&char, count: 1)
}
return data
}
public struct ProxySettings: PreferencesEntry, Equatable { public struct ProxySettings: PreferencesEntry, Equatable {
public var enabled: Bool public var enabled: Bool
public var servers: [ProxyServerSettings] public var servers: [ProxyServerSettings]

View File

@ -12,7 +12,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[1210199983] = { return Api.InputGeoPoint.parse_inputGeoPoint($0) } dict[1210199983] = { return Api.InputGeoPoint.parse_inputGeoPoint($0) }
dict[-784000893] = { return Api.payments.ValidatedRequestedInfo.parse_validatedRequestedInfo($0) } dict[-784000893] = { return Api.payments.ValidatedRequestedInfo.parse_validatedRequestedInfo($0) }
dict[1509543498] = { return Api.ChatFull.parse_chatFull($0) } dict[1509543498] = { return Api.ChatFull.parse_chatFull($0) }
dict[-1625164883] = { return Api.ChatFull.parse_channelFull($0) } dict[1517757976] = { return Api.ChatFull.parse_channelFull($0) }
dict[-591909213] = { return Api.PollResults.parse_pollResults($0) } dict[-591909213] = { return Api.PollResults.parse_pollResults($0) }
dict[-1070776313] = { return Api.ChatParticipant.parse_chatParticipant($0) } dict[-1070776313] = { return Api.ChatParticipant.parse_chatParticipant($0) }
dict[-462696732] = { return Api.ChatParticipant.parse_chatParticipantCreator($0) } dict[-462696732] = { return Api.ChatParticipant.parse_chatParticipantCreator($0) }
@ -199,9 +199,9 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[-1007549728] = { return Api.Update.parse_updateUserName($0) } dict[-1007549728] = { return Api.Update.parse_updateUserName($0) }
dict[-232290676] = { return Api.Update.parse_updateUserPhoto($0) } dict[-232290676] = { return Api.Update.parse_updateUserPhoto($0) }
dict[314359194] = { return Api.Update.parse_updateNewEncryptedMessage($0) } dict[314359194] = { return Api.Update.parse_updateNewEncryptedMessage($0) }
dict[1677363374] = { return Api.Update.parse_updateEncryptedChatTyping($0) } dict[386986326] = { return Api.Update.parse_updateEncryptedChatTyping($0) }
dict[-1264392051] = { return Api.Update.parse_updateEncryption($0) } dict[-1264392051] = { return Api.Update.parse_updateEncryption($0) }
dict[122695484] = { return Api.Update.parse_updateEncryptedMessagesRead($0) } dict[956179895] = { return Api.Update.parse_updateEncryptedMessagesRead($0) }
dict[1037718609] = { return Api.Update.parse_updateChatParticipantAdd($0) } dict[1037718609] = { return Api.Update.parse_updateChatParticipantAdd($0) }
dict[-483443337] = { return Api.Update.parse_updateChatParticipantDelete($0) } dict[-483443337] = { return Api.Update.parse_updateChatParticipantDelete($0) }
dict[-1906403213] = { return Api.Update.parse_updateDcOptions($0) } dict[-1906403213] = { return Api.Update.parse_updateDcOptions($0) }
@ -933,7 +933,7 @@ public struct Api {
return parser(reader) return parser(reader)
} }
else { else {
telegramApiLog("Type constructor \(String(signature, radix: 16, uppercase: false)) not found") telegramApiLog("Type constructor \(String(UInt32(bitPattern: signature), radix: 16, uppercase: false)) not found")
return nil return nil
} }
} }

View File

@ -153,7 +153,7 @@ public extension Api {
} }
public enum ChatFull: TypeConstructorDescription { public enum ChatFull: TypeConstructorDescription {
case chatFull(flags: Int32, id: Int64, about: String, participants: Api.ChatParticipants, chatPhoto: Api.Photo?, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo]?, pinnedMsgId: Int32?, folderId: Int32?, call: Api.InputGroupCall?, ttlPeriod: Int32?, groupcallDefaultJoinAs: Api.Peer?) case chatFull(flags: Int32, id: Int64, about: String, participants: Api.ChatParticipants, chatPhoto: Api.Photo?, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo]?, pinnedMsgId: Int32?, folderId: Int32?, call: Api.InputGroupCall?, ttlPeriod: Int32?, groupcallDefaultJoinAs: Api.Peer?)
case channelFull(flags: Int32, id: Int64, about: String, participantsCount: Int32?, adminsCount: Int32?, kickedCount: Int32?, bannedCount: Int32?, onlineCount: Int32?, readInboxMaxId: Int32, readOutboxMaxId: Int32, unreadCount: Int32, chatPhoto: Api.Photo, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo], migratedFromChatId: Int64?, migratedFromMaxId: Int32?, pinnedMsgId: Int32?, stickerset: Api.StickerSet?, availableMinId: Int32?, folderId: Int32?, linkedChatId: Int32?, location: Api.ChannelLocation?, slowmodeSeconds: Int32?, slowmodeNextSendDate: Int32?, statsDc: Int32?, pts: Int32, call: Api.InputGroupCall?, ttlPeriod: Int32?, pendingSuggestions: [String]?, groupcallDefaultJoinAs: Api.Peer?) case channelFull(flags: Int32, id: Int64, about: String, participantsCount: Int32?, adminsCount: Int32?, kickedCount: Int32?, bannedCount: Int32?, onlineCount: Int32?, readInboxMaxId: Int32, readOutboxMaxId: Int32, unreadCount: Int32, chatPhoto: Api.Photo, notifySettings: Api.PeerNotifySettings, exportedInvite: Api.ExportedChatInvite?, botInfo: [Api.BotInfo], migratedFromChatId: Int64?, migratedFromMaxId: Int32?, pinnedMsgId: Int32?, stickerset: Api.StickerSet?, availableMinId: Int32?, folderId: Int32?, linkedChatId: Int64?, location: Api.ChannelLocation?, slowmodeSeconds: Int32?, slowmodeNextSendDate: Int32?, statsDc: Int32?, pts: Int32, call: Api.InputGroupCall?, ttlPeriod: Int32?, pendingSuggestions: [String]?, groupcallDefaultJoinAs: Api.Peer?)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
@ -181,7 +181,7 @@ public extension Api {
break break
case .channelFull(let flags, let id, let about, let participantsCount, let adminsCount, let kickedCount, let bannedCount, let onlineCount, let readInboxMaxId, let readOutboxMaxId, let unreadCount, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let migratedFromChatId, let migratedFromMaxId, let pinnedMsgId, let stickerset, let availableMinId, let folderId, let linkedChatId, let location, let slowmodeSeconds, let slowmodeNextSendDate, let statsDc, let pts, let call, let ttlPeriod, let pendingSuggestions, let groupcallDefaultJoinAs): case .channelFull(let flags, let id, let about, let participantsCount, let adminsCount, let kickedCount, let bannedCount, let onlineCount, let readInboxMaxId, let readOutboxMaxId, let unreadCount, let chatPhoto, let notifySettings, let exportedInvite, let botInfo, let migratedFromChatId, let migratedFromMaxId, let pinnedMsgId, let stickerset, let availableMinId, let folderId, let linkedChatId, let location, let slowmodeSeconds, let slowmodeNextSendDate, let statsDc, let pts, let call, let ttlPeriod, let pendingSuggestions, let groupcallDefaultJoinAs):
if boxed { if boxed {
buffer.appendInt32(-1625164883) buffer.appendInt32(1517757976)
} }
serializeInt32(flags, buffer: buffer, boxed: false) serializeInt32(flags, buffer: buffer, boxed: false)
serializeInt64(id, buffer: buffer, boxed: false) serializeInt64(id, buffer: buffer, boxed: false)
@ -208,7 +208,7 @@ public extension Api {
if Int(flags) & Int(1 << 8) != 0 {stickerset!.serialize(buffer, true)} if Int(flags) & Int(1 << 8) != 0 {stickerset!.serialize(buffer, true)}
if Int(flags) & Int(1 << 9) != 0 {serializeInt32(availableMinId!, buffer: buffer, boxed: false)} if Int(flags) & Int(1 << 9) != 0 {serializeInt32(availableMinId!, buffer: buffer, boxed: false)}
if Int(flags) & Int(1 << 11) != 0 {serializeInt32(folderId!, buffer: buffer, boxed: false)} if Int(flags) & Int(1 << 11) != 0 {serializeInt32(folderId!, buffer: buffer, boxed: false)}
if Int(flags) & Int(1 << 14) != 0 {serializeInt32(linkedChatId!, buffer: buffer, boxed: false)} if Int(flags) & Int(1 << 14) != 0 {serializeInt64(linkedChatId!, buffer: buffer, boxed: false)}
if Int(flags) & Int(1 << 15) != 0 {location!.serialize(buffer, true)} if Int(flags) & Int(1 << 15) != 0 {location!.serialize(buffer, true)}
if Int(flags) & Int(1 << 17) != 0 {serializeInt32(slowmodeSeconds!, buffer: buffer, boxed: false)} if Int(flags) & Int(1 << 17) != 0 {serializeInt32(slowmodeSeconds!, buffer: buffer, boxed: false)}
if Int(flags) & Int(1 << 18) != 0 {serializeInt32(slowmodeNextSendDate!, buffer: buffer, boxed: false)} if Int(flags) & Int(1 << 18) != 0 {serializeInt32(slowmodeNextSendDate!, buffer: buffer, boxed: false)}
@ -349,8 +349,8 @@ public extension Api {
if Int(_1!) & Int(1 << 9) != 0 {_20 = reader.readInt32() } if Int(_1!) & Int(1 << 9) != 0 {_20 = reader.readInt32() }
var _21: Int32? var _21: Int32?
if Int(_1!) & Int(1 << 11) != 0 {_21 = reader.readInt32() } if Int(_1!) & Int(1 << 11) != 0 {_21 = reader.readInt32() }
var _22: Int32? var _22: Int64?
if Int(_1!) & Int(1 << 14) != 0 {_22 = reader.readInt32() } if Int(_1!) & Int(1 << 14) != 0 {_22 = reader.readInt64() }
var _23: Api.ChannelLocation? var _23: Api.ChannelLocation?
if Int(_1!) & Int(1 << 15) != 0 {if let signature = reader.readInt32() { if Int(_1!) & Int(1 << 15) != 0 {if let signature = reader.readInt32() {
_23 = Api.parse(reader, signature: signature) as? Api.ChannelLocation _23 = Api.parse(reader, signature: signature) as? Api.ChannelLocation
@ -4608,9 +4608,9 @@ public extension Api {
case updateUserName(userId: Int64, firstName: String, lastName: String, username: String) case updateUserName(userId: Int64, firstName: String, lastName: String, username: String)
case updateUserPhoto(userId: Int64, date: Int32, photo: Api.UserProfilePhoto, previous: Api.Bool) case updateUserPhoto(userId: Int64, date: Int32, photo: Api.UserProfilePhoto, previous: Api.Bool)
case updateNewEncryptedMessage(message: Api.EncryptedMessage, qts: Int32) case updateNewEncryptedMessage(message: Api.EncryptedMessage, qts: Int32)
case updateEncryptedChatTyping(chatId: Int64) case updateEncryptedChatTyping(chatId: Int32)
case updateEncryption(chat: Api.EncryptedChat, date: Int32) case updateEncryption(chat: Api.EncryptedChat, date: Int32)
case updateEncryptedMessagesRead(chatId: Int64, maxDate: Int32, date: Int32) case updateEncryptedMessagesRead(chatId: Int32, maxDate: Int32, date: Int32)
case updateChatParticipantAdd(chatId: Int64, userId: Int64, inviterId: Int64, date: Int32, version: Int32) case updateChatParticipantAdd(chatId: Int64, userId: Int64, inviterId: Int64, date: Int32, version: Int32)
case updateChatParticipantDelete(chatId: Int64, userId: Int64, version: Int32) case updateChatParticipantDelete(chatId: Int64, userId: Int64, version: Int32)
case updateDcOptions(dcOptions: [Api.DcOption]) case updateDcOptions(dcOptions: [Api.DcOption])
@ -4776,9 +4776,9 @@ public extension Api {
break break
case .updateEncryptedChatTyping(let chatId): case .updateEncryptedChatTyping(let chatId):
if boxed { if boxed {
buffer.appendInt32(1677363374) buffer.appendInt32(386986326)
} }
serializeInt64(chatId, buffer: buffer, boxed: false) serializeInt32(chatId, buffer: buffer, boxed: false)
break break
case .updateEncryption(let chat, let date): case .updateEncryption(let chat, let date):
if boxed { if boxed {
@ -4789,9 +4789,9 @@ public extension Api {
break break
case .updateEncryptedMessagesRead(let chatId, let maxDate, let date): case .updateEncryptedMessagesRead(let chatId, let maxDate, let date):
if boxed { if boxed {
buffer.appendInt32(122695484) buffer.appendInt32(956179895)
} }
serializeInt64(chatId, buffer: buffer, boxed: false) serializeInt32(chatId, buffer: buffer, boxed: false)
serializeInt32(maxDate, buffer: buffer, boxed: false) serializeInt32(maxDate, buffer: buffer, boxed: false)
serializeInt32(date, buffer: buffer, boxed: false) serializeInt32(date, buffer: buffer, boxed: false)
break break
@ -5877,8 +5877,8 @@ public extension Api {
} }
} }
public static func parse_updateEncryptedChatTyping(_ reader: BufferReader) -> Update? { public static func parse_updateEncryptedChatTyping(_ reader: BufferReader) -> Update? {
var _1: Int64? var _1: Int32?
_1 = reader.readInt64() _1 = reader.readInt32()
let _c1 = _1 != nil let _c1 = _1 != nil
if _c1 { if _c1 {
return Api.Update.updateEncryptedChatTyping(chatId: _1!) return Api.Update.updateEncryptedChatTyping(chatId: _1!)
@ -5904,8 +5904,8 @@ public extension Api {
} }
} }
public static func parse_updateEncryptedMessagesRead(_ reader: BufferReader) -> Update? { public static func parse_updateEncryptedMessagesRead(_ reader: BufferReader) -> Update? {
var _1: Int64? var _1: Int32?
_1 = reader.readInt64() _1 = reader.readInt32()
var _2: Int32? var _2: Int32?
_2 = reader.readInt32() _2 = reader.readInt32()
var _3: Int32? var _3: Int32?

View File

@ -107,7 +107,9 @@ public class UnauthorizedAccount {
network.context.performBatchUpdates({ network.context.performBatchUpdates({
var datacenterIds: [Int] = [1, 2] var datacenterIds: [Int] = [1, 2]
if !testingEnvironment { if testingEnvironment {
datacenterIds = [3]
} else {
datacenterIds.append(contentsOf: [4]) datacenterIds.append(contentsOf: [4])
} }
for id in datacenterIds { for id in datacenterIds {

View File

@ -506,8 +506,9 @@ func initializedNetwork(accountId: AccountRecordId, arguments: NetworkInitializa
if testingEnvironment { if testingEnvironment {
seedAddressList = [ seedAddressList = [
1: ["149.154.175.10"], 1: ["149.154.175.217"],
2: ["149.154.167.40"] 2: ["149.154.167.226"],
3: ["149.154.175.118"]
] ]
} else { } else {
seedAddressList = [ seedAddressList = [

View File

@ -1252,7 +1252,7 @@ private func finalStateWithUpdatesAndServerTime(postbox: Postbox, network: Netwo
case let .updateNewEncryptedMessage(message, _): case let .updateNewEncryptedMessage(message, _):
updatedState.addSecretMessages([message]) updatedState.addSecretMessages([message])
case let .updateEncryptedMessagesRead(chatId, maxDate, date): case let .updateEncryptedMessagesRead(chatId, maxDate, date):
updatedState.readSecretOutbox(peerId: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(chatId)), timestamp: maxDate, actionTimestamp: date) updatedState.readSecretOutbox(peerId: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(Int64(chatId))), timestamp: maxDate, actionTimestamp: date)
case let .updateUserTyping(userId, type): case let .updateUserTyping(userId, type):
if let date = updatesDate, date + 60 > serverTime { if let date = updatesDate, date + 60 > serverTime {
let activity = PeerInputActivity(apiType: type, timestamp: date) let activity = PeerInputActivity(apiType: type, timestamp: date)
@ -1290,7 +1290,7 @@ private func finalStateWithUpdatesAndServerTime(postbox: Postbox, network: Netwo
} }
case let .updateEncryptedChatTyping(chatId): case let .updateEncryptedChatTyping(chatId):
if let date = updatesDate, date + 60 > serverTime { if let date = updatesDate, date + 60 > serverTime {
updatedState.addPeerInputActivity(chatPeerId: PeerActivitySpace(peerId: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(chatId)), category: .global), peerId: nil, activity: .typingText) updatedState.addPeerInputActivity(chatPeerId: PeerActivitySpace(peerId: PeerId(namespace: Namespaces.Peer.SecretChat, id: PeerId.Id._internalFromInt64Value(Int64(chatId))), category: .global), peerId: nil, activity: .typingText)
} }
case let .updateDialogPinned(flags, folderId, peer): case let .updateDialogPinned(flags, folderId, peer):
let groupId: PeerGroupId = folderId.flatMap(PeerGroupId.init(rawValue:)) ?? .root let groupId: PeerGroupId = folderId.flatMap(PeerGroupId.init(rawValue:)) ?? .root