const crypto = require('crypto'); const fetch = require('node-fetch'); const Utils = require('../utils'); const utf8 = require('utf8'); const baseUrl = 'https://www.nomerogram.ru/api/v1.1'; const secretSuffix = 'queivoo1ieNgae2e'; const appId = 'p15'; const deviceId = '01b854631cb28e175ffbcccf6114acc3'; const from = 'search'; class NomerogramProvider { static async getGroups(number) { try { let timestamp = Math.floor(Date.now() / 1000); let secretSource = appId + number + deviceId + from + timestamp + secretSuffix; let hash = crypto.createHash('sha256'); hash.update(secretSource); let secret = hash.digest('hex'); console.log('secret: ', secret); let url = `${baseUrl}/group/list?from=${from}&carplate=${number}×tamp=${timestamp}&secret=${secret}&app_id=${appId}&device_id=${deviceId}`; let result = await fetch(utf8.encode(url)); let json = await result.json(); if(!json.success) { throw Error(json.message); //return []; } return json.data.groups.map(g => { return { id: g.group_id, url: g.group_url, price: g.price, date: Utils.parseDate(g.date), mileage: g.mileage, region: g.region_name, city: g.city_name, adDescription: g.description, photos: g.photos.map(p => p.src.default) }; }); } catch(ex) { ex.debugInfo = { nomerogram: { fields: 0, error: ex.message } }; throw ex; } } } module.exports = NomerogramProvider;