Beispiel #1
0
        public override void OnResponse(BinaryReader reader)
        {
            var code = reader.ReadUInt32(); // upload.file#96a18d5

            type  = Tl.Parse <storage_FileType>(reader);
            mtime = reader.ReadInt32();
            bytes = Serializers.Bytes.read(reader); // reader.ReadBytes(_limit);
        }
Beispiel #2
0
        public override void OnResponse(BinaryReader reader)
        {
            var code = reader.ReadUInt32(); // upload.file#96a18d5

            type = TL.Parse<storage_FileType>(reader);
            mtime = reader.ReadInt32();
            bytes = reader.ReadBytes(_limit);
        }
Beispiel #3
0
        static string GetExtension(storage_FileType storageFileType)
        {
            var typeName = storageFileType.GetType().Name;

            typeName = typeName.Substring("Storage_file".Length);

            typeName = typeName.Substring(0, typeName.Length - "Constructor".Length);

            //if(typeName.ToLowerInvariant() == "partial" || typeName.ToLowerInvariant() == "unknown")

            return(typeName.ToLowerInvariant());
        }
Beispiel #4
0
        public async Task GetFile()
        {
            // Get uploaded file from last message (ie: cat.jpg)

            var store  = new FileSessionStore();
            var client = new TelegramClient(store, "session", apiId, apiHash);
            await client.Connect();

            Assert.IsTrue(client.IsUserAuthorized());

            var res = await client.ImportContactByPhoneNumber(NumberToSendMessage);

            Assert.IsNotNull(res);

            // Get last message
            var hist = await client.GetMessagesHistoryForContact(res.Value, 0, 1);

            Assert.AreEqual(1, hist.Count);

            var message = (MessageConstructor)hist[0];

            Assert.AreEqual(typeof(MessageMediaPhotoConstructor), message.media.GetType());

            var media = (MessageMediaPhotoConstructor)message.media;

            Assert.AreEqual(typeof(PhotoConstructor), media.photo.GetType());

            var photo = (PhotoConstructor)media.photo;

            Assert.AreEqual(3, photo.sizes.Count);
            Assert.AreEqual(typeof(PhotoSizeConstructor), photo.sizes[2].GetType());

            var photoSize = (PhotoSizeConstructor)photo.sizes[2];

            Assert.AreEqual(typeof(FileLocationConstructor), photoSize.location.GetType());

            var fileLocation = (FileLocationConstructor)photoSize.location;
            var file         = await client.GetFile(fileLocation.volume_id, fileLocation.local_id, fileLocation.secret, 0, photoSize.size + 1024);

            storage_FileType type = file.Item1;

            byte[] bytes = file.Item2;

            string name = "../../data/get_file.";

            if (type.GetType() == typeof(Storage_fileJpegConstructor))
            {
                name += "jpg";
            }
            else if (type.GetType() == typeof(Storage_fileGifConstructor))
            {
                name += "gif";
            }
            else if (type.GetType() == typeof(Storage_filePngConstructor))
            {
                name += "png";
            }

            using (var fileStream = new FileStream(name, FileMode.Create, FileAccess.Write))
            {
                fileStream.Write(bytes, 4, photoSize.size); // The first 4 bytes seem to be the error code
            }
        }
 public override void Read(BinaryReader reader)
 {
     this.type  = Tl.Parse <storage_FileType>(reader);
     this.mtime = reader.ReadInt32();
     this.bytes = Serializers.Bytes.read(reader);
 }
 public Upload_fileConstructor(storage_FileType type, int mtime, byte[] bytes)
 {
     this.type  = type;
     this.mtime = mtime;
     this.bytes = bytes;
 }