Package detail

ozon-seller-api-extended

sergeantnahryuk271MIT1.1.6

API клиент для работы с API продавца Ozon / API client for working with Ozon Seller API

ozon, api, seller, marketplace

readme

Ozon Seller API Client

Клиент для работы с API Ozon Seller, предоставляющий функциональность для управления таймслотами и заказами.

Функциональность

Управление таймслотами

  • Сравнение и отслеживание изменений в таймслотах
  • Логирование изменений в файл
  • Поддержка различных форматов дат и временных зон
  • Обработка граничных случаев и ошибок
  • Непрерывный мониторинг таймслотов

Управление заказами

  • Получение списка заказов на поставку
  • Получение таймслотов для массива ID заказов
  • Получение таймслотов по диапазону дат
  • Фильтрация заказов по статусу
  • Пагинация результатов

Установка

npm install ozon-seller-api-extended

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

Инициализация

const ozon = require('ozon-seller-api-extended');

// Настройка API
ozon.useApi('your-api-key');
ozon.useClientId('your-client-id');

Работа с таймслотами

// Сравнение таймслотов
const result = ozon.compareTimeslotObjects({
  timeslots: [
    { from: '2019-08-24T14:15:22Z', to: '2019-08-24T14:15:22Z' }
  ],
  timezone: [
    { iana_name: 'Europe/Moscow', offset: '+03:00' }
  ]
}, 'uniqueKey', 42);

// Получение таймслотов для массива ID
const timeslots = await ozon.getTimeslotsForIds(['order-id-1', 'order-id-2'], 5); // 5 запросов в секунду

// Получение таймслотов по диапазону дат
const timeslotsByDate = await ozon.getTimeslotsByDateRange(
  'order-id',
  '2024-01-01T00:00:00Z',
  '2024-01-31T23:59:59Z'
);

Работа с заказами

// Получение списка заказов
const orders = await ozon.getSupplyOrderList(100, 0); // limit=100, offset=0

// Получение списка заказов с колбэком
ozon.getSupplyOrderList(100, 0, (data) => {
  console.log('Список заказов:', data);
});

Мониторинг таймслотов

// Мониторинг одного заказа
const monitor = await ozon.monitorTimeslots('12345');

// Мониторинг нескольких заказов
const monitor = await ozon.monitorTimeslots(['12345', '67890']);

// Мониторинг с настройками
const monitor = await ozon.monitorTimeslots('12345', {
  from: '2024-01-01T00:00:00Z',
  to: '2024-01-31T23:59:59Z',
  rps: 3,
  comparisonKey: 'my-monitor'
});

// Остановка мониторинга
monitor.stop();

Тестирование

Проект включает три типа тестов:

1. Модульные тесты (npm test)

  • Тестирование основных функций API
  • Проверка обработки ошибок
  • Проверка ограничений по RPS
  • Использует моки для имитации API запросов

2. Тесты API вызовов (npm run test:api)

  • Тестирование реальных вызовов API
  • Проверка получения таймслотов
  • Проверка фильтрации по датам
  • Требует действительные API ключи

3. Тесты сравнения объектов (npm run test:deep)

  • Тестирование функции глубокого сравнения
  • Проверка обработки различных типов данных
  • Проверка граничных случаев
  • Тесты производительности и стресс-тесты

Запуск тестов:

# Запуск всех тестов
npm run test:all

# Запуск отдельных тестов
npm test           # модульные тесты
npm run test:api   # тесты API
npm run test:deep  # тесты сравнения

Логирование

Все изменения таймслотов логируются в файл differences.log в формате:

[2024-02-20T12:34:56.789Z] [LOG][testKey] (2024-02-20T12:34:56.789Z) ID=42 ➕ Added timeslots: С 24.08.2019 14:15:22 по 24.08.2019 14:15:22

Обработка ошибок

Библиотека обрабатывает следующие типы ошибок:

  • Ошибки API (коды ошибок)
  • Сетевые ошибки
  • Ошибки валидации данных
  • Таймауты
  • Ошибки формата даты
  • Ошибки временных зон

Примеры обработки ошибок:

try {
  const result = await ozon.getTimeslotsForIds(['invalid-id']);
  if (result.code) {
    throw new Error(`API Error: ${result.message}`);
  }
} catch (error) {
  console.error('Ошибка запроса:', error.message);
}

Производительность

  • Оптимизированная работа с большими наборами данных
  • Эффективное управление памятью
  • Поддержка конкурентных запросов
  • Ограничение времени выполнения операций
  • Контроль количества запросов в секунду (RPS)

Безопасность

  • Безопасное хранение API ключей
  • Валидация входных данных
  • Защита от переполнения памяти
  • Обработка некорректных данных
  • Проверка форматов дат и временных зон

Зависимости

  • node-fetch: ^2.6.7

Лицензия

MIT

Ссылки