100 lines
3.0 KiB
JavaScript
100 lines
3.0 KiB
JavaScript
|
const logger = require('log4js').getLogger('FS reducers');
|
||
|
|
||
|
const { get, isEmpty } = require('lodash');
|
||
|
|
||
|
// Bearer YlF_b6D149xr_xnrrYudlSnpn1A53b67vALlIK2HnD0ymBXQocRvPW3KjGN8jZNw0KnyAqxGaOzU7CLVPr84_KbnTxutNRXFVR9axmRqGN6ccda1xahoZo58KC2GWnYx'
|
||
|
|
||
|
logger.level = 'debug';
|
||
|
|
||
|
function reduceExplore(data) {
|
||
|
const obj = {};
|
||
|
if (typeof data === 'undefined' || isEmpty(data)) return obj;
|
||
|
const { categories, location, contact } = data;
|
||
|
|
||
|
// console.log(contact);
|
||
|
// make copy of object;
|
||
|
|
||
|
const localObj = Object.assign({}, data);
|
||
|
|
||
|
const iconPrefix = get(categories[0], 'icon.prefix', '');
|
||
|
const iconSuffix = get(categories[0], 'icon.suffix', '');
|
||
|
|
||
|
obj.name = get(localObj, 'name', '');
|
||
|
obj.category = get(categories[0], 'shortName', '');
|
||
|
obj.icon = (iconPrefix !== '') ? `${iconPrefix}64${iconSuffix}` : '';
|
||
|
obj.id = get(localObj, 'id', '');
|
||
|
obj.provider = 'foursquare';
|
||
|
obj.address = get(location, 'formattedAddress', []).join(', ');
|
||
|
obj.city = get(location, 'city', '');
|
||
|
obj.state = get(location, 'state', '');
|
||
|
obj.postcode = get(location, 'postalCode', '');
|
||
|
obj.twitter = get(contact, 'twitter', '');
|
||
|
obj.facebook = get(contact, 'facebookName', '');
|
||
|
obj.url = get(localObj, 'url', '');
|
||
|
obj.latitude = get(location, 'lat', '');
|
||
|
obj.longitude = get(location, 'lng', '');
|
||
|
|
||
|
// logger.debug(JSON.stringify(obj));
|
||
|
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
function reduceYelp(data) {
|
||
|
const obj = {};
|
||
|
|
||
|
if (typeof data === 'undefined' || isEmpty(data)) return obj;
|
||
|
const yelpUrlfixer = /([--:\w?@%&+~#=]*\.[a-z]{2,4}\/{0,2})((?:[?&](?:\w+)=(?:\w+))+|[--:\w?@%&+~#=]+)?/g;
|
||
|
|
||
|
const localObj = Object.assign({}, data);
|
||
|
|
||
|
obj.url = get(localObj, 'url', '');
|
||
|
obj.rating = get(localObj, 'rating', '');
|
||
|
obj.reviewCount = get(localObj, 'review_count', '');
|
||
|
|
||
|
if (obj.url !== '') {
|
||
|
const url = yelpUrlfixer.exec(obj.url);
|
||
|
const urlBit = url[2];
|
||
|
obj.viewIntent = `https://m.yelp.com/${urlBit}`;
|
||
|
}
|
||
|
else
|
||
|
obj.viewIntent = '';
|
||
|
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
function reduceFullFS(data) {
|
||
|
const obj = {};
|
||
|
if (typeof data === 'undefined' || isEmpty(data)) return obj;
|
||
|
const localObj = Object.assign({}, data);
|
||
|
|
||
|
const photosCount = get(localObj, 'photos.count', 0);
|
||
|
const tipsCount = get(localObj, 'tips.count', 0);
|
||
|
|
||
|
if (photosCount > 0) {
|
||
|
const photoItems = get(localObj, 'photos.groups[0].items');
|
||
|
obj.images = photoItems.map(item => {
|
||
|
const prefix = get(item, 'prefix', '');
|
||
|
const suffix = get(item, 'suffix', '');
|
||
|
const width = get(item, 'width', 640);
|
||
|
const height = get(item, 'height', 480);
|
||
|
|
||
|
const ratio = width / 640;
|
||
|
let ratioHeight = ~~(height / ratio);
|
||
|
if (ratioHeight <= 0) ratioHeight = 640;
|
||
|
console.log(`${width}, ${height} => ${640}, ${ratioHeight}`);
|
||
|
return `${prefix}${640}x${ratioHeight}${suffix}`;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (tipsCount > 0) {
|
||
|
const tipItems = get(localObj, 'tips.groups[0].items');
|
||
|
obj.tips = tipItems.map(item => {
|
||
|
return get(item, 'text', '');
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return obj;
|
||
|
}
|
||
|
|
||
|
module.exports = { reduceExplore, reduceYelp, reduceFullFS };
|