From 6365297aaf26348a56866ac86b7be9dbde1b448e Mon Sep 17 00:00:00 2001 From: Jesus Date: Wed, 18 May 2016 12:55:22 +0200 Subject: [PATCH] UserFullConstructor : UserFull no accepts self id. Added test method to GetUserFull Added info to README.md --- README.md | 13 +++++++ TLSharp.Core/MTProto/TL.cs | 11 ++++-- TLSharp.Core/Requests/GetUserFullRequest.cs | 42 +++++++++++++++++++++ TLSharp.Core/TLSharp.Core.csproj | 1 + TLSharp.Core/TelegramClient.cs | 9 +++++ TLSharp.Tests/TLSharpTests.cs | 24 ++++++++++++ TLSharp.Tests/app.config | 1 + 7 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 TLSharp.Core/Requests/GetUserFullRequest.cs diff --git a/README.md b/README.md index 4f28e2d..4be845f 100644 --- a/README.md +++ b/README.md @@ -179,6 +179,19 @@ var hist = await client.GetMessagesHistoryForContact(userId, offset, limit); **Returns**: **List\**, message history +####Get UserFull Request +Returns user's full information for specified userId. + +_Example_: + +``` +var userFull = await client.GetUserFull(userId); +``` + +* userId - **int**, user id + +**Returns**: **UserFull**, User's information + ## Contributing Contributing is highly appreciated! diff --git a/TLSharp.Core/MTProto/TL.cs b/TLSharp.Core/MTProto/TL.cs index 609c4cd..2a0e5a7 100644 --- a/TLSharp.Core/MTProto/TL.cs +++ b/TLSharp.Core/MTProto/TL.cs @@ -7126,10 +7126,15 @@ namespace TLSharp.Core.MTProto public override void Read(BinaryReader reader) { - this.user = new UserRequestConstructor(); - uint dataCode = reader.ReadUInt32(); + if (reader.ReadUInt32() == 0x7007b451) + { + this.user = new UserSelfConstructor(); + } + else + { + this.user = new UserRequestConstructor(); + } this.user.Read(reader); - this.link = TL.Parse(reader); this.profile_photo = TL.Parse(reader); this.notify_settings = TL.Parse(reader); diff --git a/TLSharp.Core/Requests/GetUserFullRequest.cs b/TLSharp.Core/Requests/GetUserFullRequest.cs new file mode 100644 index 0000000..4751c83 --- /dev/null +++ b/TLSharp.Core/Requests/GetUserFullRequest.cs @@ -0,0 +1,42 @@ +using System; +using System.IO; +using TLSharp.Core.MTProto; + +namespace TLSharp.Core.Requests +{ + public class GetUserFullRequest : MTProtoRequest + { + private InputUser _inputUser; + public UserFull _userFull; + + public GetUserFullRequest(int id) + { + _inputUser = new InputUserContactConstructor(id); + } + + public override void OnSend(BinaryWriter writer) + { + writer.Write(0xca30a5b1); + _inputUser.Write(writer); + } + + public override void OnResponse(BinaryReader reader) + { + _userFull = new UserFullConstructor(); + var dataCode = reader.ReadUInt32(); + _userFull.Read(reader); + } + + public override void OnException(Exception exception) + { + throw new NotImplementedException(); + } + + public override bool Responded + { + get; + } + + public override bool Confirmed => true; + } +} diff --git a/TLSharp.Core/TLSharp.Core.csproj b/TLSharp.Core/TLSharp.Core.csproj index 6b3c220..58fc390 100644 --- a/TLSharp.Core/TLSharp.Core.csproj +++ b/TLSharp.Core/TLSharp.Core.csproj @@ -71,6 +71,7 @@ + diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs index a6d2f51..3215962 100644 --- a/TLSharp.Core/TelegramClient.cs +++ b/TLSharp.Core/TelegramClient.cs @@ -241,6 +241,15 @@ namespace TLSharp.Core return request.messages; } + public async Task GetUserFull(int user_id) + { + var request = new GetUserFullRequest(user_id); + await _sender.Send(request); + await _sender.Recieve(request); + + return request._userFull; + } + private bool validateNumber(string number) { var regex = new Regex("^\\d{7,20}$"); diff --git a/TLSharp.Tests/TLSharpTests.cs b/TLSharp.Tests/TLSharpTests.cs index fe09cb9..eb9a373 100644 --- a/TLSharp.Tests/TLSharpTests.cs +++ b/TLSharp.Tests/TLSharpTests.cs @@ -19,6 +19,8 @@ namespace TLSharp.Tests private string UserNameToSendMessage { get; set; } + private string NumberToGetUserFull { get; set; } + private string apiHash = ""; private int apiId = 0; @@ -39,6 +41,10 @@ namespace TLSharp.Tests if (string.IsNullOrEmpty(UserNameToSendMessage)) throw new InvalidOperationException("UserNameToSendMessage is null. Specify userName in app.config"); + NumberToGetUserFull = ConfigurationManager.AppSettings["numberToGetUserFull"]; + if (string.IsNullOrEmpty(NumberToGetUserFull)) + throw new InvalidOperationException("NumberToGetUserFull is null. Specify Number in app.config"); + } [TestMethod] @@ -197,5 +203,23 @@ namespace TLSharp.Tests Assert.IsNotNull(authKey.AuthKey.Data); } } + + [TestMethod] + public async Task GetUserFullRequest() + { + var store = new FileSessionStore(); + var client = new TelegramClient(store, "session", apiId, apiHash); + await client.Connect(); + + Assert.IsTrue(client.IsUserAuthorized()); + + var res = await client.ImportContactByPhoneNumber(NumberToGetUserFull); + + Assert.IsNotNull(res); + + var userFull = await client.GetUserFull(res.Value); + + Assert.IsNotNull(userFull); + } } } diff --git a/TLSharp.Tests/app.config b/TLSharp.Tests/app.config index 6768147..7e3c08a 100644 --- a/TLSharp.Tests/app.config +++ b/TLSharp.Tests/app.config @@ -4,5 +4,6 @@ +