-
Notifications
You must be signed in to change notification settings - Fork 0
Home RU

LogsParser — библиотека на .NET для интеграции с arizonarp.logsparser.info, просмотрщиком логов игровых
серверов Arizona RP. Она авторизуется, запрашивает страницы и превращает их HTML в типизированные модели.
Эта вики — справочник по API. Краткий обзор находится в README репозитория.
| Пакет |
LogsParser на NuGet |
| Версия | 1.2.7 |
| Целевые платформы |
net7.0, net8.0, net9.0, net10.0
|
| Зависимости |
Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Logging.Abstractions
|
| Лицензия | CC BY-NC 4.0 — только некоммерческое использование |
- разбирает логи, активность администрации и top-операции в неизменяемые записи
- авторизуется по логину, паролю и TOTP-подтверждению — реактивно, по мере необходимости
- решает React anti-DDoS challenge и повторяет исходный запрос
- читает текущий аккаунт и каталог фильтров с параметрами
dynamic[n]прямо из layout страницы - отслеживает заголовки rate limit и пережидает ответы
429вместо падения - полностью оставляет хранение cookies на стороне вызывающего кода
- работает как самостоятельно, так и через
Microsoft.Extensions.DependencyInjection
dotnet add package LogsParser
using LogsParser;
using LogsParser.Abstractions;
using LogsParser.Models;
using LogsParser.Net;
using var dataSource = new LogsParserHttpDataSource(
credentials: new LogsParserCredentials("my_login", "my_password", "BASE32SECRET"),
cookieStorage: new MemoryCookieStorage());
var client = new LogsParserClient(dataSource);
var page = await client.GetLogsAsync(new LogsQuery(
ServerId: 201,
Filters: ["warn", "mute"],
PeriodFrom: DateTime.UtcNow.AddDays(-1),
PeriodTo: DateTime.UtcNow));
foreach (var entry in page.Entries)
{
Console.WriteLine($"{entry.Timestamp:u} {entry.Text}");
}Отдельного LoginAsync вызывать не нужно: транспорт реагирует на редиректы сервиса, поэтому первый же запрос
данных сам выполняет вход и подтверждение второго фактора.
| Страница | О чём она |
|---|---|
| Начало работы | Установка, пространства имён, первый запрос вручную и через DI |
| LogsParserClient | High-level фасад: все публичные методы, параметры и возвращаемые типы |
| Запросы и построитель URI | Модели запросов, LogsRequestUriBuilder, правила валидации и нормализации |
| Модели | Полный справочник по всем публичным record-типам |
| Парсеры |
LogsHtmlParser и LogsFilterCatalogParser без HTTP |
| Транспорт и авторизация |
ILogsParserDataSource, автомат авторизации, retry, rate limit, anti-DDoS challenge |
| Хранение cookies | Контракт ICookieStorage и сохранение сессии |
| Внедрение зависимостей |
AddLogsParser, опции регистрации, времена жизни сервисов |
| Логирование |
LogsParserLogging, категории и уровни |
| Исключения | Иерархия исключений и их обработка |
Репозиторий, решение и папка проекта называются LogTools. Сборка, NuGet-пакет и все пространства имён
называются LogsParser. Имена папок внутри репозитория тоже намеренно не совпадают с пространствами имён —
пространство имён всегда берётся из объявления namespace, а не из пути к файлу.
LogsParser · CC BY-NC 4.0 — non-commercial use only / только некоммерческое использование
English
- Home
- Getting Started
- LogsParserClient
- Requests and URI Builder
- Models
- Parsers
- Transport and Authentication
- Cookie Storage
- Dependency Injection
- Logging
- Exceptions
Русский
- Главная
- Начало работы
- LogsParserClient
- Запросы и построитель URI
- Модели
- Парсеры
- Транспорт и авторизация
- Хранение cookies
- Внедрение зависимостей
- Логирование
- Исключения