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