Skip to content

Instantly share code, notes, and snippets.

@anomal3
Created August 23, 2024 21:15
Show Gist options
  • Save anomal3/831d92aeefa1277feb7c85aa3be9659f to your computer and use it in GitHub Desktop.
Save anomal3/831d92aeefa1277feb7c85aa3be9659f to your computer and use it in GitHub Desktop.
p2p api Binance
/*
* Привязано к банку Kaspi с фиатом KZT к USDT
* Для среднего значения торгов первых 10 ордеров по входящему запросу от 1000000 Тенге
*/
using System.Text;
using Newtonsoft.Json.Linq;
static async Task Main(string[] args)
{
var url = "https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search";
using (HttpClient client = new HttpClient())
{
// Создание запроса
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
// Добавление заголовков, обязательно gzip и deflate потому что данные сжатые
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Add("TE", "Trailers");
request.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
request.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
// динамические данные запроса
var requestData = new
{
asset = "USDT",
fiat = "KZT",
merchantCheck = true,
page = 1,
payTypes = new[] { "KaspiBank" },
publisherType = (string)null,
rows = 10,
tradeType = "BUY",
transAmount = "1000000"
};
// Сериализуем как JSON и посылаем в Body/RAW
request.Content = new StringContent(JsonConvert.SerializeObject(requestData), Encoding.UTF8,
"application/json");
// Отправляем запрос
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
// Читаем данные как есть
var responseStream = await response.Content.ReadAsStreamAsync();
//Разжимаем в поток и читаем поток
using (var decompressedStream = new GZipStream(responseStream, CompressionMode.Decompress))
using (var streamReader = new StreamReader(decompressedStream))
{
string responseJson = await streamReader.ReadToEndAsync();
// Десериализация как объекта чтобы не парсить структурой
JObject responseObject = JObject.Parse(responseJson);
// Получаем массив данных и берём за входящие данные data
JArray dataArray = (JArray)responseObject["data"];
List<double> averageList = new List<double>();
foreach (var item in dataArray)
{
// Извлекаем price по имени
string price = item["adv"]["price"]?.ToString();
averageList.Add(double.Parse(price.Replace('.', ',')));
}
double average = averageList.Average();
Console.WriteLine("Average 10" + average);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment