@@ -13,54 +13,123 @@ namespace Lava.NET
1313 /// </summary>
1414 /// <param name="token">Токен от Lava.ru</param>
1515 /// <param name="type">Тип вашего аккаунта</param>
16- public class ILavaAPI ( string token , LavaType type )
16+ public class LavaAPI ( string token , LavaType type )
1717 {
1818 internal readonly HttpClient _httpClient = new HttpClient ( )
1919 {
2020 BaseAddress = new ( "https://api.lava.ru/" )
2121 } ;
22- internal async Task < string > SendRequest ( string path , LavaType ? neededType , HttpMethod method , string ? body = null )
22+ /// <summary>
23+ /// Отправка запроса на сервер
24+ /// </summary>
25+ /// <param name="path">path метода</param>
26+ /// <param name="neededType">требуемый тип аккаунта</param>
27+ /// <param name="method">Метод для отправки запроса</param>
28+ /// <param name="body">string body</param>
29+ /// <returns>string от сервера</returns>
30+ /// <exception cref="Exceptions.TypeException">Несоответсвие типа аккаунта и требуемого типа</exception>
31+ internal virtual async Task < string > SendRequest ( string path , LavaType ? neededType , HttpMethod method , string ? body = null )
2332 {
2433 if ( neededType != LavaType . any && neededType != type ) throw new Exceptions . TypeException ( "Your Lava.ru account type is not equals needed type" ) ;
2534 _httpClient . DefaultRequestHeaders . Authorization = new ( "" , token ) ;
26- using ( var message = new HttpRequestMessage ( method , path ) )
35+ using ( var message = new HttpRequestMessage ( method , _httpClient . BaseAddress + path ) )
2736 {
37+
2838 message . Content = body == null ? new StringContent ( body . ToString ( ) ) : null ;
2939 var req = await _httpClient . SendAsync ( message ) ;
3040 return await req . Content . ReadAsStringAsync ( ) ;
3141 }
3242 }
33-
34- public async Task < PaymentResponse ? > CreatePaymentAsync ( PaymentRequest data )
43+ /// <summary>
44+ /// Создание ссылки на оплату (Выставление счета)
45+ /// </summary>
46+ /// <param name="data"> Данные, передаваемые в запрос. Смотреть АПИ</param>
47+ /// <returns>Ответ от сервера или null</returns>
48+ public virtual async Task < PaymentResponse ? > CreatePaymentAsync ( PaymentRequest data )
3549 => JsonConvert . DeserializeObject < PaymentResponse > ( await SendRequest ( "invoice/create" , LavaType . any , HttpMethod . Post , data . ToString ( ) ) ) ;
36- public async Task < PaymentInfo ? > GetPaymentInfoAsync ( string id )
50+ /// <summary>
51+ /// Получение информации о выставленном счете, в т.ч. о том, оплачен ли счет
52+ /// </summary>
53+ /// <param name="id">айди выставленного счета</param>
54+ /// <returns>Ответ от сервера или null</returns>
55+ public virtual async Task < PaymentInfo ? > GetPaymentInfoAsync ( string id )
3756 => JsonConvert . DeserializeObject < PaymentInfo > ( await SendRequest ( "invoice/info" , LavaType . any , HttpMethod . Post , id ) ) ;
57+ /// <summary>
58+ /// Установка webhook для получения информации о пополнениях, оплате выставленных счетов и т.д.
59+ /// </summary>
60+ /// <param name="url">HTTPS url до вашего бекенда, куда должен приходить вебхук</param>
61+ /// <returns></returns>
3862 public async Task SetWebhookUrl ( string url )
3963 => await SendRequest ( "invoice/set-webhook" , LavaType . any , HttpMethod . Post , url ) ;
64+ /// <summary>
65+ /// Проверка токена
66+ /// </summary>
67+ /// <returns></returns>
4068 public async Task < bool > pingAsync ( )
4169 => JsonNode . Parse ( await SendRequest ( "test/ping" , LavaType . any , HttpMethod . Get ) ) ? [ "status" ] ? . ToString ( ) . Equals ( true ) ?? false ;
4270 }
43- public class PublicLavaAPI : ILavaAPI
71+ public sealed class PublicLavaAPI : LavaAPI
4472 {
45- // Для обычных юзеров + общедоступное
73+ /// <summary>
74+ /// Для обычных юзеров, т.е. вкладка Кошелек
75+ /// </summary>
76+ /// <param name="token">токен от вашего аккаунта</param>
4677 public PublicLavaAPI ( string token ) : base ( token , LavaType . wallet ) { }
4778
79+ /// <summary>
80+ /// Получение кошельков на вашем аккаунте
81+ /// </summary>
82+ /// <returns>Список из кошельков или null</returns>
4883 public async Task < Wallet [ ] ? > getWallets ( )
4984 => JsonConvert . DeserializeObject < Wallet [ ] > ( await SendRequest ( "wallet/list" , LavaType . wallet , HttpMethod . Get ) ) ;
85+ /// <summary>
86+ /// Cоздние заявки на вывод
87+ /// </summary>
88+ /// <param name="withdraw">данные, передаваемые в запрос</param>
89+ /// <returns>Стандартный ответ от сервера или null</returns>
5090 public async Task < DefaultResponse ? > MakeWithdraw ( Withdraw withdraw )
5191 => JsonConvert . DeserializeObject < DefaultResponse > ( await SendRequest ( "withdraw/create" , LavaType . wallet , HttpMethod . Post , withdraw . ToString ( ) ) ) ;
92+ /// <summary>
93+ /// Информация о выводе
94+ /// </summary>
95+ /// <param name="id">Id заявки</param>
96+ /// <returns>Информация о выводе</returns>
5297 public async Task < WithdrawInfo ? > InfoWithdrawAsync ( string id )
5398 => JsonConvert . DeserializeObject < WithdrawInfo > ( await SendRequest ( "withdraw/info" , LavaType . wallet , HttpMethod . Post , id ) ) ;
99+ /// <summary>
100+ /// Создание перевода
101+ /// </summary>
102+ /// <param name="data">Данные, передаваемые в запрос</param>
103+ /// <returns>Стандартный ответ от сервера или null</returns>
54104 public async Task < DefaultResponse ? > MakeTransfer ( Transfer data )
55105 => JsonConvert . DeserializeObject < DefaultResponse > ( await SendRequest ( "transfer/create" , LavaType . wallet , HttpMethod . Post , data . ToString ( ) ) ) ;
106+ /// <summary>
107+ /// Получение информации о переводе
108+ /// </summary>
109+ /// <param name="id">Id перевода</param>
110+ /// <returns>Данные о переводе</returns>
56111 public async Task < TransferData ? > GetTransferDataAsync ( string id )
57112 => JsonConvert . DeserializeObject < TransferData > ( await SendRequest ( "transfer/info" , LavaType . wallet , HttpMethod . Post , id ) ) ;
113+ /// <summary>
114+ /// Получение всех транзакций
115+ /// </summary>
116+ /// <param name="transaction">Необ. данные для настройки вывода</param>
117+ /// <returns>Все транзакции</returns>
58118 public async Task < Transaction [ ] ? > GetTransactionsAsync ( TransactionParam ? transaction = null )
59119 => JsonConvert . DeserializeObject < Transaction [ ] > ( await SendRequest ( "transactions/list" , LavaType . wallet , HttpMethod . Post , transaction ? . ToString ( ) ) ) ;
120+ /// <summary>
121+ /// Получение банков, подключенных к СБП
122+ /// </summary>
123+ /// <returns>Список банков</returns>
60124 public async Task < SBPBanks ? > GetSBPBanksAsync ( )
61125 => JsonConvert . DeserializeObject < SBPBanks > ( await SendRequest ( "withdraw/get-sbp-bank-list" , LavaType . wallet , HttpMethod . Post ) ) ;
62126 }
63- public class BusinessLavaAPI ( string token ) : ILavaAPI ( token , LavaType . business )
127+ /// <summary>
128+ /// В РАЗРАБОТКЕ
129+ /// Часть lava.ru API, которая работает с бизнесом. Вкладка "Бизнес" dev.lava.ru
130+ /// </summary>
131+ /// <param name="token">Токен вашего аккаунта</param>
132+ public sealed class BusinessLavaAPI ( string token ) : LavaAPI ( token , LavaType . business )
64133 {
65134 internal async Task < string > SendRequest ( string path , LavaType ? neededType = LavaType . business , HttpMethod ? method = null , string ? body = null , bool isSpecial = true )
66135 {
@@ -79,6 +148,11 @@ internal async Task<string> SendRequest(string path, LavaType? neededType = Lava
79148 return await req . Content . ReadAsStringAsync ( ) ;
80149 }
81150 }
151+ /// <summary>
152+ /// Создание вывода
153+ /// </summary>
154+ /// <param name="request">Данные, передаваемые в запрос</param>
155+ /// <returns></returns>
82156 public async Task < PayoffResponse ? > CreatePayoffAsync ( PayoffRequest request )
83157 => JsonConvert . DeserializeObject < PayoffResponse > ( await SendRequest ( "business/payoff/create" , body : request . ToString ( ) ) ) ;
84158 public async Task < PayoffDataResponse ? > GetPayoffDataAsync ( PayoffDataRequest request )
0 commit comments