Skip to content

Instantly share code, notes, and snippets.

@anomal3
Created April 25, 2025 07:59
Show Gist options
  • Save anomal3/0c6c6b9aecbf37077ce2977ac67b3e1b to your computer and use it in GitHub Desktop.
Save anomal3/0c6c6b9aecbf37077ce2977ac67b3e1b to your computer and use it in GitHub Desktop.
Не документированное API Rapira.net курс USDT\RUB
public class ApiRapira
{
static string apiurl = "https://api.rapira.net/market/symbol-thumb";
public static async Task<double> GetCurrentRateFiat()
{
var currentRub = await CustomHttpPostResponseAsync();
if (currentRub == 0)
{
return await ApiBybit.GetCurrentRateFiat();
}
return currentRub;
}
private static async Task<double> CustomHttpPostResponseAsync()
{
using (var client = new HttpClient())
{
// Добавляем заголовки
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("br"));
client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("zstd"));
client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en"));
client.DefaultRequestHeaders.Add("dnt", "1");
client.DefaultRequestHeaders.Add("origin", "https://rapira.net");
var response = await client.PostAsync(apiurl, null);
if (response.IsSuccessStatusCode)
{
var responseStream = await response.Content.ReadAsStreamAsync();
string responseContent;
// Проверяем, сжат ли ответ
if (response.Content.Headers.ContentEncoding.Contains("gzip"))
{
using (var decompressedStream = new GZipStream(responseStream, CompressionMode.Decompress))
using (var reader = new StreamReader(decompressedStream))
{
responseContent = await reader.ReadToEndAsync();
}
}
else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
{
using (var decompressedStream = new DeflateStream(responseStream, CompressionMode.Decompress))
using (var reader = new StreamReader(decompressedStream))
{
responseContent = await reader.ReadToEndAsync();
}
}
else
{
using (var reader = new StreamReader(responseStream))
{
responseContent = await reader.ReadToEndAsync();
}
}
// Парсим как массив
JArray dataArray = JArray.Parse(responseContent);
var usdtRubItem = dataArray.FirstOrDefault(x => x["symbol"]?.ToString() == "USDT/RUB");
if (usdtRubItem != null)
{
string price = usdtRubItem["close"]?.ToString();
if (double.TryParse(price, out double _price))
{
return _price;
}
else
{
return 0;
}
}
}
}
return 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment