API библиотека для интеграции с RealtyPult
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
lib
test
.editorconfig
.gitignore
.npmrc
LICENSE
README.md
circle.yml
index.js
package.json

README.md

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();

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