mirror of
https://github.com/sochix/TLSharp.git
synced 2025-12-06 08:02:00 +01:00
Merge pull request #196 from steavy29/signup-impl
Added SignUp implementation.
This commit is contained in:
commit
d6331c2352
19
README.md
19
README.md
|
|
@ -73,6 +73,7 @@ All methods except [IsPhoneRegistered](#IsPhoneRegistered) requires to authentic
|
|||
Currently supported methods:
|
||||
- [IsPhoneRegistered - Check if phone is registered in Telegram](#isphoneregistered)
|
||||
- [Authenticate user](#authenticate-user)
|
||||
- [SignUp user](#signup-user)
|
||||
- [Get Contact by Phone number](#get-contact-by-phone-number)
|
||||
- [Get Contact by Username](#get-contact-by-username)
|
||||
- [Send Message to Contact](#send-message-to-contact)
|
||||
|
|
@ -109,6 +110,24 @@ _Example_:
|
|||
|
||||
**Returns:** **User**, authenticated User.
|
||||
|
||||
####SignUp user
|
||||
Register new user by phone number, secret code and first/last name.
|
||||
|
||||
_Example_:
|
||||
|
||||
```
|
||||
var hash = await client.SendCodeRequest(phoneNumber);
|
||||
|
||||
var code = "1234"; //code that you receive from Telegram
|
||||
|
||||
var user = await client.SignUp(phoneNumber, hash, code, "TLSharp", "User");
|
||||
```
|
||||
* phoneNumber - **string**, phone number in international format (eg. 791812312323) that is not yet registered in Telegram.
|
||||
* firstName - **string**, new user first name
|
||||
* lastName - **string**, new user last name
|
||||
|
||||
**Returns:** **User**, authenticated User.
|
||||
|
||||
####Get Contact By Phone number
|
||||
Get user id by phone number.
|
||||
|
||||
|
|
|
|||
|
|
@ -126,20 +126,36 @@ namespace TLSharp.Core
|
|||
return request._phoneCodeHash;
|
||||
}
|
||||
|
||||
public async Task<User> MakeAuth(string phoneNumber, string phoneHash, string code)
|
||||
public async Task<User> MakeAuth(string phoneNumber, string phoneCodeHash, string code)
|
||||
{
|
||||
var request = new AuthSignInRequest(phoneNumber, phoneHash, code);
|
||||
var request = new AuthSignInRequest(phoneNumber, phoneCodeHash, code);
|
||||
await _sender.Send(request);
|
||||
await _sender.Receive(request);
|
||||
|
||||
_session.SessionExpires = request.SessionExpires;
|
||||
_session.User = request.user;
|
||||
|
||||
_session.Save();
|
||||
OnUserAuthenticated(request.user, request.SessionExpires);
|
||||
|
||||
return request.user;
|
||||
}
|
||||
|
||||
public async Task<User> SignUp(string phoneNumber, string phoneCodeHash, string code, string firstName, string lastName)
|
||||
{
|
||||
var request = new AuthSignUpRequest(phoneNumber, phoneCodeHash, code, firstName, lastName);
|
||||
await _sender.Send(request);
|
||||
await _sender.Receive(request);
|
||||
|
||||
OnUserAuthenticated(request.user, request.SessionExpires);
|
||||
|
||||
return request.user;
|
||||
}
|
||||
|
||||
private void OnUserAuthenticated(User user, int sessionExpiration)
|
||||
{
|
||||
_session.User = user;
|
||||
_session.SessionExpires = sessionExpiration;
|
||||
|
||||
_session.Save();
|
||||
}
|
||||
|
||||
public async Task<InputFile> UploadFile(string name, byte[] data)
|
||||
{
|
||||
var partSize = 65536;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using System.Configuration;
|
||||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
|
@ -17,6 +17,8 @@ namespace TLSharp.Tests
|
|||
|
||||
private string NumberToAuthenticate { get; set; }
|
||||
|
||||
private string NotRegisteredNumberToSignUp { get; set; }
|
||||
|
||||
private string UserNameToSendMessage { get; set; }
|
||||
|
||||
private string NumberToGetUserFull { get; set; }
|
||||
|
|
@ -29,21 +31,25 @@ namespace TLSharp.Tests
|
|||
public void Init()
|
||||
{
|
||||
// Setup your phone numbers in app.config
|
||||
NumberToAuthenticate = ConfigurationManager.AppSettings["numberToAuthenticate"];
|
||||
NumberToAuthenticate = ConfigurationManager.AppSettings[nameof(NumberToAuthenticate)];
|
||||
if (string.IsNullOrEmpty(NumberToAuthenticate))
|
||||
throw new InvalidOperationException("NumberToAuthenticate is null. Specify number in app.config");
|
||||
Debug.WriteLine("NumberToAuthenticate not configured in app.config! Some tests may fail.");
|
||||
|
||||
NumberToSendMessage = ConfigurationManager.AppSettings["numberToSendMessage"];
|
||||
NotRegisteredNumberToSignUp = ConfigurationManager.AppSettings[nameof(NotRegisteredNumberToSignUp)];
|
||||
if (string.IsNullOrEmpty(NotRegisteredNumberToSignUp))
|
||||
Debug.WriteLine("NotRegisteredNumberToSignUp not configured in app.config! Some tests may fail.");
|
||||
|
||||
NumberToSendMessage = ConfigurationManager.AppSettings[nameof(NumberToSendMessage)];
|
||||
if (string.IsNullOrEmpty(NumberToSendMessage))
|
||||
throw new InvalidOperationException("NumberToSendMessage is null. Specify number in app.config");
|
||||
Debug.WriteLine("NumberToSendMessage not configured in app.config! Some tests may fail.");
|
||||
|
||||
UserNameToSendMessage = ConfigurationManager.AppSettings["userNameToSendMessage"];
|
||||
UserNameToSendMessage = ConfigurationManager.AppSettings[nameof(UserNameToSendMessage)];
|
||||
if (string.IsNullOrEmpty(UserNameToSendMessage))
|
||||
throw new InvalidOperationException("UserNameToSendMessage is null. Specify userName in app.config");
|
||||
Debug.WriteLine("UserNameToSendMessage not configured in app.config! Some tests may fail.");
|
||||
|
||||
NumberToGetUserFull = ConfigurationManager.AppSettings["numberToGetUserFull"];
|
||||
NumberToGetUserFull = ConfigurationManager.AppSettings[nameof(NumberToGetUserFull)];
|
||||
if (string.IsNullOrEmpty(NumberToGetUserFull))
|
||||
throw new InvalidOperationException("NumberToGetUserFull is null. Specify Number in app.config");
|
||||
Debug.WriteLine("NumberToGetUserFull not configured in app.config! Some tests may fail.");
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -61,6 +67,25 @@ namespace TLSharp.Tests
|
|||
var user = await client.MakeAuth(NumberToAuthenticate, hash, code);
|
||||
|
||||
Assert.IsNotNull(user);
|
||||
Assert.IsTrue(client.IsUserAuthorized());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task SignUpNewUser()
|
||||
{
|
||||
var store = new FileSessionStore();
|
||||
var client = new TelegramClient(store, "session", apiId, apiHash);
|
||||
await client.Connect();
|
||||
|
||||
var hash = await client.SendCodeRequest(NotRegisteredNumberToSignUp);
|
||||
var code = "";
|
||||
|
||||
var registeredUser = await client.SignUp(NotRegisteredNumberToSignUp, hash, code, "TLSharp", "User");
|
||||
Assert.IsNotNull(registeredUser);
|
||||
Assert.IsTrue(client.IsUserAuthorized());
|
||||
|
||||
var loggedInUser = await client.MakeAuth(NotRegisteredNumberToSignUp, hash, code);
|
||||
Assert.IsNotNull(loggedInUser);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="numberToAuthenticate" value="" />
|
||||
<add key="numberToSendMessage" value=""/>
|
||||
<add key="userNameToSendMessage" value=""/>
|
||||
<add key="NumberToAuthenticate" value="" />
|
||||
<add key="NotRegisteredNumberToSignUp" value=""/>
|
||||
<add key="NumberToSendMessage" value=""/>
|
||||
<add key="UserNameToSendMessage" value=""/>
|
||||
<add key="NumberToGetUserFull" value=""/>
|
||||
</appSettings>
|
||||
</configuration>
|
||||
|
|
|
|||
Loading…
Reference in a new issue