nodejs-realtypult-partner-lib

1.0.7 • Public • Published

nodejs-realtypult-partner-lib CircleCI

API библиотека для интеграции с RealtyPult. Подключение портала недвижимости к партнерской программе.

Нужна версия для PHP?

https://github.com/bushev/php-realtypult-partner-lib

Как установить

npm install nodejs-realtypult-partner-lib --save

Как пользоваться

 
const Importer = require('../index').Importer;
 
let importer = new Importer({
    // Ссылка на XML фид из личного кабинета партнера
    xmlFeedUrl: 'https://realtypult.ru/api/xml/export/partner/FORMAT/TOKEN',
 
    // Файл отчета, будет создаваться автоматически, ссылку на него нужно вставить в кабинете партнера
    reportFileLocation: '/var/www/my-site/public/rm-report.xml',
 
    // Формат XML фида ('realtypult' или 'yandex')
    format: 'realtypult',
 
    // Функция будет вызвана для каждого объявления из XML фида
    onItem: onItem,
 
    // Функция будет вызвана когда весь XML фид будет обработан
    onEnd: onEnd,
 
    // Функция будет вызвана в случае непредвиденной критической ошибки
    onError: onError
});
 
/**
 * Обработчик одного объявления
 *
 * Требуется реализовать алгоритм:
 *
 * 1. Проверить (по item.id) размещали ли вы это объявления ранее
 *
 * Если не размещали:
 *      2.1 Сохраните объявление в вашей базе данных (не забудьте скачать себе изображения объекта)
 *      2.2 Вызовите функцию `callback` и передайте в нее ссылку на объявление на вашем сайте,
 *          Например: callback({url: 'http://your-site.ru/item1'})
 *
 * Если размещали:
 *      2.1 Проверьте, изменилось ли обновление, если да то обновите его в вашей базе данных
 *          (не забудьте про изображения)
 *      2.2 Получите из вашей базы данных количество просмотров этого объявления (рекомендуется)
 *      2.2 Вызовите функцию `callback` и передайте в нее ссылку на объявление на вашем сайте,
 *          и количество просмотров (рекомендуется)
 *          Например: callback({url: 'http://your-site.ru/item1', views: 15})
 *
 *
 * В случае если на каком-либо этапе вы понимаете что это объявление не может
 * быть обработано корректно, вызовите функцию `callback` и передайте ей сообщение об ошибке
 * Например: callback({error: 'Произошел технический сбой'});
 *
 * Помните, что сообщение об ошибке увидит конечный пользователь!
 *
 * Примеры частых ошибок:
 *
 * > "Произошел технический сбой (проблема с базой данных, нет места на диске, и тп.)"
 * > "Не удалось определить адрес объекта"
 * > И тп.
 *
 * В случае если в вашей базе данных есть очень похожее объявление, вызовите `callback` и
 * передайте в него ссылку на это объявление (размещать это объявление не нужно)
 * Например: callback({similarUrl: 'http://your-site.ru/item2'});
 *
 * В случае если вы не можете разместить объявление в силу нарушений ваших правил,
 * вызовите `callback` и передайте в него сообщение пользователю
 * Например: callback({rejectReason: 'Номер телефона заблокирован'});
 *
 * Помните, что сообщение об отклонении увидит конечный пользователь!
 *
 * Примеры частых ошибок:
 *
 * > "Номер телефона заблокирован"
 * > "Слишком низкая цена для этого объявления"
 * > И тп.
 *
 * @param item     - объект содержащий всю информацию об объявлении
 * @param callback - функция, которую нужно вызвать когда обработка объявления завершена,
 *                   и передать в нее результат обработки
 */
function onItem(item, callback) {
 
    console.log(`Обрабатываю объявление: ${item.id}`);
 
    console.log(item);
 
    // Успешно размещено
    // callback({url: 'http://your-site.ru/item1', views: 15});
 
    // ИЛИ
 
    // Проблема с доступом к базе данных / Недостаточно памяти
    // callback({error: 'Произошел технический сбой'});
 
    // ИЛИ
 
    // Объявление дубликат
    // callback({similarUrl: 'http://your-site.ru/item2'});
 
    // ИЛИ
 
    // Не соответствует правилам вашего портала
    // callback({rejectReason: 'Номер телефона заблокирован'});
}
 
/**
 * Обработчик конца импорта
 *
 * Здесь нужно удалить из вашей базы данных все объявления которые отсутствовали в XML фиде
 * (не забудьте удалить изображения)
 *
 * @param report
 * @param report.location            - Путь до файла с готовым отчетом (ссылку на него нужно вставить в
 *                                     личный кабинет партнера)
 * @param report.statistics.total    - Общее число объявление в фиде
 * @param report.statistics.success  - Число объявление обработанных успешно
 * @param report.statistics.rejected - Число объявление отклоненных от публикации
 * @param report.statistics.errors   - Число объявление обработанных с ошибками
 */
function onEnd(report) {
 
    console.log('Обработка XML фида завершена!');
    console.log(report);
}
 
/**
 * Обработчик критической ошибки импорта XML фида
 *
 * @param error
 */
function onError(error) {
 
    console.log(error);
}
 
// Запускаем импорт
importer.run();

Код этого примера находится тут.

Package Sidebar

Install

npm i nodejs-realtypult-partner-lib

Weekly Downloads

0

Version

1.0.7

License

MIT

Last publish

Collaborators

  • bushev