Skip to content

Latest commit

 

History

History
138 lines (104 loc) · 4.01 KB

File metadata and controls

138 lines (104 loc) · 4.01 KB

yandex_internetometer

Dart-библиотека для работы с Yandex Internetometer.

Пакет на pub.dev: yandex_internetometer
English README: README.md

yandex_internetometer в первую очередь задуман как переиспользуемая библиотека. CLI внутри пакета является только тонкой обёрткой над библиотечным API.

Пакет можно использовать двумя способами:

  • как Dart-библиотеку для получения IP, региона, ISP и результатов speed test;
  • как CLI-утилиту, которая печатает те же данные в текстовом формате, JSON, JSONL или Prometheus.

Пакет неофициальный и не связан с Яндексом.

Возможности

  • Определение IPv4 и IPv6
  • Парсинг региона и ISP/ASN со страницы Internetometer
  • Измерение latency, download speed и upload speed
  • Публичный API для использования как библиотеки
  • Встроенный CLI executable
  • Поддержка text, JSON, JSONL и Prometheus output

Установка

Добавить пакет в проект:

dart pub add yandex_internetometer

Для локальной разработки:

git clone https://github.com/GiaNTizmO/yandex_internetometer.git
cd yandex_internetometer
dart pub get

Использование как библиотеки

import 'dart:io';

import 'package:yandex_internetometer/yandex_internetometer.dart';

Future<void> main() async {
  final client = InternetometerClient(
    config: InternetometerConfig(
      language: InternetometerLanguage.en,
      concurrency: 4,
      requestTimeout: const Duration(seconds: 30),
    ),
  );

  try {
    final metadata = await client.getPageMetadata();
    final ipv4 = await client.getIPv4();
    final speed = await client.runSpeedTest();

    final record = MeasurementRecord(
      ipv4: ipv4,
      region: metadata.regionName,
      isp: metadata.isp?.name,
      asn: metadata.isp?.asn,
      downloadMbps: speed.downloadMbps,
      uploadMbps: speed.uploadMbps,
      latencyMs: speed.latency.inMilliseconds,
    );

    const formatter = MeasurementFormatter();
    stdout.writeln(formatter.toPrettyJson(record));
  } finally {
    client.close();
  }
}

Готовый runnable пример лежит в example/main.dart.

Использование CLI

Запуск package executable:

dart run internetometer --all

Или прямой запуск entrypoint:

dart run bin/internetometer.dart --json --speed

Основные опции CLI

  • --ip печатает IPv4, IPv6, регион и ISP
  • --speed запускает latency, download и upload checks
  • --all запускает полный набор измерений
  • --json печатает pretty JSON
  • --prometheus печатает Prometheus metrics
  • --save path.jsonl добавляет результат как JSONL record
  • --lang ru|en выбирает локаль страницы Yandex для названия региона
  • --concurrency 4 задаёт parallelism для speed test
  • --timeout 60 задаёт общий timeout в секундах
  • --tui включает live progress во время speed test

Пример вывода

{
  "ipv4": "203.0.113.10",
  "region": "Moscow",
  "isp": "Example Telecom",
  "asn": 64512,
  "download_mbps": 123.45,
  "upload_mbps": 98.76,
  "latency_ms": 11
}

Структура пакета

  • lib/ публичный API библиотеки
  • bin/ CLI executable
  • example/ runnable example
  • test/ unit tests

Разработка

dart format .
dart analyze
dart test
dart pub publish --dry-run