Search user by username with send message test. (#356)

* Search user by username with send message test.
This commit is contained in:
Mikhail 2016-12-28 15:37:34 +01:00 committed by Andres G. Aragoneses
parent 0428753b2b
commit 47d1c10c9d
4 changed files with 67 additions and 0 deletions

View file

@ -337,6 +337,23 @@ namespace TLSharp.Core
await _sender.SendPingAsync(); await _sender.SendPingAsync();
} }
/// <summary>
/// Serch user or chat. API: contacts.search#11f812d8 q:string limit:int = contacts.Found;
/// </summary>
/// <param name="q">User or chat name</param>
/// <param name="limit">Max result count</param>
/// <returns></returns>
public async Task<TLFound> SearchUserAsync(string q, int limit = 10)
{
var r = new TeleSharp.TL.Contacts.TLRequestSearch
{
q = q,
limit = limit
};
return await SendRequestAsync<TLFound>(r);
}
private void OnUserAuthenticated(TLUser TLUser) private void OnUserAuthenticated(TLUser TLUser)
{ {
_session.TLUser = TLUser; _session.TLUser = TLUser;

View file

@ -75,5 +75,11 @@ namespace TLSharp.Tests
{ {
await base.FloodExceptionShouldNotCauseCannotReadPackageLengthError(); await base.FloodExceptionShouldNotCauseCannotReadPackageLengthError();
} }
[Test]
public override async Task SendMessageByUserNameTest()
{
await base.SendMessageByUserNameTest();
}
} }
} }

View file

@ -73,5 +73,11 @@ namespace TLSharp.Tests
{ {
await base.FloodExceptionShouldNotCauseCannotReadPackageLengthError(); await base.FloodExceptionShouldNotCauseCannotReadPackageLengthError();
} }
[TestMethod]
public override async Task SendMessageByUserNameTest()
{
await base.SendMessageByUserNameTest();
}
} }
} }

View file

@ -323,6 +323,7 @@ namespace TLSharp.Tests
var result = await client.IsPhoneRegisteredAsync(NumberToAuthenticate); var result = await client.IsPhoneRegisteredAsync(NumberToAuthenticate);
Assert.IsTrue(result); Assert.IsTrue(result);
} }
public virtual async Task FloodExceptionShouldNotCauseCannotReadPackageLengthError() public virtual async Task FloodExceptionShouldNotCauseCannotReadPackageLengthError()
{ {
for (int i = 0; i < 50; i++) for (int i = 0; i < 50; i++)
@ -338,5 +339,42 @@ namespace TLSharp.Tests
} }
} }
} }
public virtual async Task SendMessageByUserNameTest()
{
UserNameToSendMessage = ConfigurationManager.AppSettings[nameof(UserNameToSendMessage)];
if (string.IsNullOrWhiteSpace(UserNameToSendMessage))
throw new Exception($"Please fill the '{nameof(UserNameToSendMessage)}' setting in app.config file first");
var client = NewClient();
await client.ConnectAsync();
var result = await client.SearchUserAsync(UserNameToSendMessage);
var user = result.users.lists
.Where(x => x.GetType() == typeof(TLUser))
.OfType<TLUser>()
.FirstOrDefault(x => x.username == UserNameToSendMessage.TrimStart('@'));
if (user == null)
{
var contacts = await client.GetContactsAsync();
user = contacts.users.lists
.Where(x => x.GetType() == typeof(TLUser))
.OfType<TLUser>()
.FirstOrDefault(x => x.username == UserNameToSendMessage.TrimStart('@'));
}
if (user == null)
{
throw new System.Exception("Username was not found: " + UserNameToSendMessage);
}
await client.SendTypingAsync(new TLInputPeerUser() { user_id = user.id });
Thread.Sleep(3000);
await client.SendMessageAsync(new TLInputPeerUser() { user_id = user.id }, "TEST");
}
} }
} }