private async Task <TlAbsInputPeer> GetInputPeer(Peer peer, int id)
        {
            TlAbsInputPeer receiver;

            switch (peer)
            {
            case Peer.User:
                receiver = new TlInputPeerUser {
                    UserId = id
                };
                break;

            case Peer.Chat:
                receiver = new TlInputPeerChat {
                    ChatId = id
                };
                break;

            default:
                var dialogs = (TlDialogs)await _client.GetUserDialogsAsync();

                var chat = dialogs.Chats.Lists
                           .OfType <TlChannel>()
                           .FirstOrDefault(c => c.Id == id);
                receiver = new TlInputPeerChannel {
                    ChannelId = id, AccessHash = chat.AccessHash.Value
                };
                break;
            }
            return(receiver);
        }
        public virtual async Task DownloadFileFromContactTest()
        {
            var client = NewClient();

            await client.ConnectAsync();

            var result = await client.GetContactsAsync();

            var user = result.Users.Lists
                       .OfType <TlUser>()
                       .FirstOrDefault(x => x.Phone == NumberToSendMessage);

            var inputPeer = new TlInputPeerUser {
                UserId = user.Id
            };
            var res = await client.SendRequestAsync <TlMessages>(new TlRequestGetHistory { Peer = inputPeer });

            var document = res.Messages.Lists
                           .OfType <TlMessage>()
                           .Where(m => m.Media != null)
                           .Select(m => m.Media)
                           .OfType <TlMessageMediaDocument>()
                           .Select(md => md.Document)
                           .OfType <TlDocument>()
                           .First();

            var resFile = await client.GetFile(
                new TlInputDocumentFileLocation
            {
                AccessHash = document.AccessHash,
                Id         = document.Id,
                Version    = document.Version
            },
                document.Size);

            Assert.True(resFile.Bytes.Length > 0);
        }