Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }