Created
August 23, 2024 21:15
-
-
Save anomal3/831d92aeefa1277feb7c85aa3be9659f to your computer and use it in GitHub Desktop.
p2p api Binance
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Привязано к банку 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