private async Task <object> ProcessHttpWait(IMTSession session, InnerMessage message) { var result = await Task.FromResult <object>(null); var _req = session.Services.Serialization().Deserialize(message.Content) as MTHttpWait; if (_req != null) { this.max_delay = _req.MaxDelay; this.max_wait = _req.MaxWait; this.wait_after = _req.WaitAfter; message.max_wait = _req.MaxWait; message.max_delay = _req.MaxDelay; message.wait_after = _req.WaitAfter; } var _ret = new TLInputPeerEmpty { }; if (_ret as MTObject != null) { result = new MTRpcResult { ReqMsgId = (long)message.msg_id, Result = new MTGzipPacked { PackedData = Utils.compress(BitConverter.GetBytes(0x997275b5)) } }; //session.AddMessage(result as MTObject, true, true); } return(result); }
private async Task <object> ProcessMessage(IMTSession session, InnerMessage message, CancellationToken cancellationToken) { object result = null; ulong type = 0; try { type = BitConverter.ToUInt32(message.Content, 0); var req = message.Content.ToMTObject(); // session.Services.Serialization().Deserialize(message.Content); { this.logger.LogInformation(req.GetType().Name); var envelop = MessageContext.Create(req); envelop.container_seq_no(message.container_seq_no); envelop.container_msg_id(message.container_msg_id); envelop.AuthKey(message.AuthKey); envelop.msg_id(message.msg_id); envelop.seq_no(message.seq_no); var _ret = await serviceProvider.Bus().Send(envelop, cancellationToken: cancellationToken) as MTObject; if (_ret as MTObject != null) { result = new MTRpcResult { ReqMsgId = (long)message.msg_id, Result = new MTGzipPacked { PackedData = Utils.compress(_ret.ToByteArray()) } }; session.AddMessage(result as MTObject, true, true); } } } catch (Exception err) { if (err is InvalidDataException) { this.logger.LogWarning( $"Invalid or Not Supported Constructor: '{type.ToString("X4")}'"); } else { this.logger.LogError($"An error occured while trying to process this message: {err}"); } } return(result); }
private async Task <object> ProcessAuthSendCode(IMTSession session, InnerMessage message) { var result = await Task.FromResult <object>(null); using (var stream = new MemoryStream(message.Content)) using (var reader = new BinaryReader(stream)) { var o = session.Services.Serialization().Deserialize(message.Content) as MTObject; //o.ToByteArray(); //var type = reader.ReadUInt32(); //var flags = reader.ReadUInt32(); //var phone = StringSerializer.Deserialize(reader); /// /// auth.sentCode#5e002502 flags:# type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int = auth.SentCode; /// this.logger.LogInformation("************************SendCode"); var hash = new byte[8]; new Random().NextBytes(hash); var code = "1234"; //this.SentCode = true; var sent_code = new TLSentCode() { Flags = 4, PhoneCodeHash = "phonehash", Type = new TLSentCodeTypeSms { Length = 4, }, Timeout = 40000 }; var ss = sent_code.ToByteArray(); result = new MTRpcResult { ReqMsgId = (long)message.msg_id, Result = new MTGzipPacked { PackedData = Utils.compress(sent_code.ToByteArray()) } }; session.AddMessage(result as MTObject, false, true); } return(result); }