UserFullConstructor : UserFull no accepts self id.

Added test method to GetUserFull
Added info to README.md
This commit is contained in:
Jesus 2016-05-18 12:55:22 +02:00
parent 2fff2d11c2
commit 6365297aaf
7 changed files with 98 additions and 3 deletions

View file

@ -179,6 +179,19 @@ var hist = await client.GetMessagesHistoryForContact(userId, offset, limit);
**Returns**: **List\<Message\>**, 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!

View file

@ -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<contacts_Link>(reader);
this.profile_photo = TL.Parse<Photo>(reader);
this.notify_settings = TL.Parse<PeerNotifySettings>(reader);

View file

@ -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;
}
}

View file

@ -71,6 +71,7 @@
<Compile Include="Requests\GetFileRequest.cs" />
<Compile Include="Requests\GetHistoryRequest.cs" />
<Compile Include="Requests\GetNearestDcRequest.cs" />
<Compile Include="Requests\GetUserFullRequest.cs" />
<Compile Include="Requests\GetUsersRequest.cs" />
<Compile Include="Requests\ImportByUserName.cs" />
<Compile Include="Requests\ImportContactRequest.cs" />

View file

@ -241,6 +241,15 @@ namespace TLSharp.Core
return request.messages;
}
public async Task<UserFull> 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}$");

View file

@ -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);
}
}
}

View file

@ -4,5 +4,6 @@
<add key="numberToAuthenticate" value="" />
<add key="numberToSendMessage" value=""/>
<add key="userNameToSendMessage" value=""/>
<add key="NumberToGetUserFull" value=""/>
</appSettings>
</configuration>