nodejs-realtypult-partner-lib
API библиотека для интеграции с RealtyPult. Подключение портала недвижимости к партнерской программе.
Нужна версия для PHP?
https://github.com/bushev/php-realtypult-partner-lib
Как установить
npm install nodejs-realtypult-partner-lib --save
Как пользоваться
const Importer = Importer;let 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 - функция, которую нужно вызвать когда обработка объявления завершена,* и передать в нее результат обработки*/{console;console;// Успешно размещено// 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 - Число объявление обработанных с ошибками*/{console;console;}/*** Обработчик критической ошибки импорта XML фида** @param error*/{console;}// Запускаем импортimporter;
Код этого примера находится тут.