added motion detection

This commit is contained in:
Martin Donnelly 2018-11-11 17:47:03 +00:00
parent f1426431e2
commit 74658eb4c8
11 changed files with 15643 additions and 8727 deletions

8322
notes/route.json Normal file

File diff suppressed because it is too large Load Diff

22
package-lock.json generated
View File

@ -6286,6 +6286,23 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
}, },
"jsonfile": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz",
"integrity": "sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==",
"requires": {
"graceful-fs": "^4.1.6",
"universalify": "^0.1.2"
},
"dependencies": {
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"optional": true
}
}
},
"jsonify": { "jsonify": {
"version": "0.0.0", "version": "0.0.0",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
@ -11569,6 +11586,11 @@
"integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=",
"dev": true "dev": true
}, },
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe": { "unpipe": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",

View File

@ -33,6 +33,7 @@
"hh-mm-ss": "^1.2.0", "hh-mm-ss": "^1.2.0",
"humanize-duration": "^3.13.0", "humanize-duration": "^3.13.0",
"jquery": "^3.3.1", "jquery": "^3.3.1",
"jsonfile": "^5.0.0",
"leaflet": "^1.3.1", "leaflet": "^1.3.1",
"lodash": "^4.17.5", "lodash": "^4.17.5",
"log4js": "^2.5.3", "log4js": "^2.5.3",

View File

@ -159,6 +159,7 @@ app.get('/nearbydetail', cache('15 minutes'), (req, res) => {
rightbyme.doGetMoreDetail(req.query.id) rightbyme.doGetMoreDetail(req.query.id)
.then((d) => { .then((d) => {
res.set('Cache-Control', 'public, max-age=900'); res.set('Cache-Control', 'public, max-age=900');
logger.debug('nearbydetail', d);
res.send(d); res.send(d);
}).catch((e) => { }).catch((e) => {
logger.error(e); logger.error(e);

View File

@ -7,7 +7,7 @@ const client = yelp.client('YlF_b6D149xr_xnrrYudlSnpn1A53b67vALlIK2HnD0ymBXQocRv
const { get, isEmpty, has } = require('lodash'); const { get, isEmpty, has } = require('lodash');
const { reduceExplore, reduceYelp, reduceFullFS, reduceTwitter } = require('./reducers/rightbyme'); const { reduceExplore, reduceYelp, reduceFullFS, reduceTwitter, reducePhotos } = require('./reducers/rightbyme');
const twitterClient = new Twitter({ const twitterClient = new Twitter({
'consumer_key': 'bJvwgjA9O52j7rC6mqoeefPLO', 'consumer_key': 'bJvwgjA9O52j7rC6mqoeefPLO',
@ -156,6 +156,40 @@ function doFSGetFullVenue(data = {}) {
}); });
} }
function doFSGetPhotos(data = {}) {
const payLoad = Object.assign({}, data);
logger.debug('>> doFSGetPhotos');
// https://api.foursquare.com/v2/venues/4c5ff51213791b8d0d5c4eaf?client_id=IXXFUGW3NC3DEVS2V5EU4NV4CL5E12AYGUPIR2D3U3B5DX4B&client_secret=MZRIJDCEKUMVERA1OKVAIZI0TYAEBD3W2A2AGPTPI5TOLL1D&v=20180224
return new Promise((resolve, reject) => {
if (!isEmpty(payLoad)) {
// stuff
// more
const id = payLoad.id;
foursquare.venues.photos(id, { 'limit':16 }, function(err, fsData) {
if (err)
return reject(err);
else {
// console.log(JSON.stringify(fsData));
logger.debug('fsData', JSON.stringify(fsData));
const initPayload = (has(payLoad, 'name')) ? {} : reduceExplore(get(fsData, 'response.venue'));
const partPayload = reducePhotos(fsData);
const newPayload = Object.assign(payLoad, initPayload, partPayload);
// payLoad.images = partPayload;
logger.debug('GetPhotos', partPayload);
return resolve(newPayload);
}
});
}
else
return resolve(payLoad);
});
}
function doTweetSearch(data = {}) { function doTweetSearch(data = {}) {
const payLoad = Object.assign({}, data); const payLoad = Object.assign({}, data);
logger.debug('>> doTweetSearch'); logger.debug('>> doTweetSearch');
@ -256,6 +290,10 @@ function doGetMoreDetail(id) {
// return doYelpSearch(d) // return doYelpSearch(d)
return doTweetSearch(d); return doTweetSearch(d);
}) })
.then((d) => {
// return doYelpSearch(d)
return doFSGetPhotos(d);
})
.catch((e) => { .catch((e) => {
logger.error(e); logger.error(e);

View File

@ -78,6 +78,63 @@ function reduceFullFS(data) {
const photosCount = (typeof(photoItems) !== 'undefined' && photoItems !== null) ? photoItems.length : 0; const photosCount = (typeof(photoItems) !== 'undefined' && photoItems !== null) ? photoItems.length : 0;
const tipsCount = get(localObj, 'tips.count', 0); const tipsCount = get(localObj, 'tips.count', 0);
/* if (photosCount > 0)
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;
}
function reduceTwitter(data) {
const urlReg = /(http|ftp|https):\/\/([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?/;
let obj = [];
if (data.length > 0)
obj = data.map(item => {
let text = get(item, 'text');
const urlTest = urlReg.exec(text);
if (urlTest !== null) {
const newUrl = `<a hef='${urlTest[0]}'>${urlTest[0]}</a>`;
console.log(newUrl);
text = text.replace(urlTest[0], newUrl);
}
return text;
});
return obj;
}
function reducePhotos(data) {
const obj = {};
if (typeof data === 'undefined' || isEmpty(data)) return obj;
const localObj = Object.assign({}, data);
const photoBlob = get(localObj, 'response.photos');
let photoItems;
photoItems = photoBlob.items;
const photosCount = (typeof(photoItems) !== 'undefined' && photoItems !== null) ? photoItems.length : 0;
if (photosCount > 0) if (photosCount > 0)
obj.images = photoItems.map(item => { obj.images = photoItems.map(item => {
@ -94,24 +151,7 @@ function reduceFullFS(data) {
return `${prefix}${640}x${ratioHeight}${suffix}`; 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; return obj;
} }
function reduceTwitter(data) { module.exports = { reduceExplore, reduceYelp, reduceFullFS, reduceTwitter, reducePhotos };
let obj = [];
if (data.length > 0)
obj = data.map(item => {
return get(item, 'text');
});
return obj;
}
module.exports = { reduceExplore, reduceYelp, reduceFullFS, reduceTwitter };

View File

@ -11,7 +11,7 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
const CACHE_VERSION = { 'version': '0.0.986' }; const CACHE_VERSION = { 'version': '0.0.990' };
const PRECACHE = `jubileeData-${CACHE_VERSION.version}`; const PRECACHE = `jubileeData-${CACHE_VERSION.version}`;
const RUNTIME = 'runtime'; const RUNTIME = 'runtime';

View File

@ -0,0 +1,16 @@
const EventEmitter = require('events');
const jsonfile = require('jsonfile');
class DummyLocation extends EventEmitter {
constructor(options = {}) {
this.options = Object.assign({}, options);
console.log('options', this.options);
if (typeof this.options.file !== 'undefined' && this.options.file !== null)
this.file = jsonfile.reaFileSync(this.options.file);
}
}
module.exports = DummyLocation;

View File

@ -0,0 +1,492 @@
{
"meta": {
"code": 200,
"requestId": "5be4299cdb04f50b42b394c5"
},
"notifications": [
{
"type": "notificationTray",
"item": {
"unreadCount": 0
}
}
],
"response": {
"photos": {
"count": 12,
"items": [
{
"id": "5bbd123a38f216002562c5ee",
"createdAt": 1539117626,
"source": {
"name": "Swarm for iOS",
"url": "https:\/\/www.swarmapp.com"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/1948074_vPwEHeg5do6Ee-er4kuZyduHV-vd-Q6J-65vn_ku3LQ.jpg",
"width": 1440,
"height": 1920,
"user": {
"id": "1948074",
"firstName": "Melissa",
"lastName": "Augustine",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/KOLGARLUQIV5CZBT.jpg"
}
},
"checkin": {
"id": "5bbd12350868a200393f7862",
"createdAt": 1539117621,
"type": "checkin",
"timeZoneOffset": 60
},
"visibility": "public"
},
{
"id": "5b898849b72a660025254016",
"createdAt": 1535739977,
"source": {
"name": "Swarm for Android",
"url": "https:\/\/www.swarmapp.com"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/436240_lf_O0Vb0OIow6QEsgzBO3I9duEs38jPXQJvv9RD9y9Q.jpg",
"width": 1425,
"height": 1900,
"user": {
"id": "436240",
"firstName": "Julia",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/2XVEZTSR1U30QYX4.jpg"
}
},
"checkin": {
"id": "5b89718b029a55002c4ee859",
"createdAt": 1535734155,
"type": "checkin",
"timeZoneOffset": 60,
"with": [
{
"id": "146873429",
"firstName": "Martin",
"lastName": "Sandler",
"gender": "male",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/146873429-XCTWJCWDDGOOI24B.jpg"
}
},
{
"id": "9567008",
"firstName": "Dee",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/9567008-JFKYBIQVFQEX4430.jpg"
}
}
]
},
"visibility": "public"
},
{
"id": "5b8987f4f62e0900398f4474",
"createdAt": 1535739892,
"source": {
"name": "Swarm for Android",
"url": "https:\/\/www.swarmapp.com"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/436240_Y5RkVVP5n24lq4ecN8ugzRgxHAQKvOlmoSJylrbn6Ps.jpg",
"width": 1425,
"height": 1900,
"user": {
"id": "436240",
"firstName": "Julia",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/2XVEZTSR1U30QYX4.jpg"
}
},
"checkin": {
"id": "5b89718b029a55002c4ee859",
"createdAt": 1535734155,
"type": "checkin",
"timeZoneOffset": 60,
"with": [
{
"id": "146873429",
"firstName": "Martin",
"lastName": "Sandler",
"gender": "male",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/146873429-XCTWJCWDDGOOI24B.jpg"
}
},
{
"id": "9567008",
"firstName": "Dee",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/9567008-JFKYBIQVFQEX4430.jpg"
}
}
]
},
"visibility": "public"
},
{
"id": "5b8987b42f97ec002cd07566",
"createdAt": 1535739828,
"source": {
"name": "Swarm for Android",
"url": "https:\/\/www.swarmapp.com"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/436240_ssnIV5giiAVgdAzC-wLu3eO7uO-aUQ2Cwxn4XYFyGXg.jpg",
"width": 1425,
"height": 1900,
"user": {
"id": "436240",
"firstName": "Julia",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/2XVEZTSR1U30QYX4.jpg"
}
},
"checkin": {
"id": "5b89718b029a55002c4ee859",
"createdAt": 1535734155,
"type": "checkin",
"timeZoneOffset": 60,
"with": [
{
"id": "146873429",
"firstName": "Martin",
"lastName": "Sandler",
"gender": "male",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/146873429-XCTWJCWDDGOOI24B.jpg"
}
},
{
"id": "9567008",
"firstName": "Dee",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/9567008-JFKYBIQVFQEX4430.jpg"
}
}
]
},
"visibility": "public"
},
{
"id": "5b8987b1f00a70002c124762",
"createdAt": 1535739825,
"source": {
"name": "Swarm for Android",
"url": "https:\/\/www.swarmapp.com"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/436240_urUZKDPWGff2wrbkkA0nnDAwMa9lRoKXpnF9MOUfhWg.jpg",
"width": 1425,
"height": 1900,
"user": {
"id": "436240",
"firstName": "Julia",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/2XVEZTSR1U30QYX4.jpg"
}
},
"checkin": {
"id": "5b89718b029a55002c4ee859",
"createdAt": 1535734155,
"type": "checkin",
"timeZoneOffset": 60,
"with": [
{
"id": "146873429",
"firstName": "Martin",
"lastName": "Sandler",
"gender": "male",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/146873429-XCTWJCWDDGOOI24B.jpg"
}
},
{
"id": "9567008",
"firstName": "Dee",
"lastName": "Sandler",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/9567008-JFKYBIQVFQEX4430.jpg"
}
}
]
},
"visibility": "public"
},
{
"id": "5b68c52835d3fc002c16f7f6",
"createdAt": 1533592872,
"source": {
"name": "Foursquare for iOS",
"url": "https:\/\/foursquare.com\/download\/#\/iphone"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/51219901_GqEDfQTgqsYk1MM2L8BrJaw2ie7XG6slHO7VksIkyAs.jpg",
"width": 1440,
"height": 1920,
"user": {
"id": "51219901",
"firstName": "Carlos",
"lastName": "Parra",
"gender": "male",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/14AXOE0O0CEKGXXT.jpg"
}
},
"tip": {
"id": "5b68c5266fd626002d07ef7e",
"createdAt": 1533592870,
"text": "Not that good except for the plantain with queso fresco",
"type": "user",
"canonicalUrl": "https:\/\/foursquare.com\/item\/5b68c5266fd626002d07ef7e",
"likes": {
"count": 0,
"groups": []
},
"like": false,
"logView": true,
"agreeCount": 0,
"disagreeCount": 0,
"todo": {
"count": 0
}
},
"visibility": "public"
},
{
"id": "5b184c9f53159300393f0e1d",
"createdAt": 1528319135,
"source": {
"name": "Swarm for iOS",
"url": "https:\/\/www.swarmapp.com"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/38350236_XF4cfY2mnz6EheplrEtL1Y-SCyI0aoCe-uRzIabo-dY.jpg",
"width": 1440,
"height": 1920,
"user": {
"id": "38350236",
"firstName": "Anastasia",
"lastName": "Romanova",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/38350236_rVPWalqK_OS0Xk7Oe8yrjSnSCIiSoGIN2KiBlyh_9vOlllAgpAEL2R2NLoWZejcGUfWC0zwIH.jpg"
}
},
"checkin": {
"id": "5b184c9bc4404e001c0b0007",
"createdAt": 1528319131,
"type": "checkin",
"timeZoneOffset": 60
},
"visibility": "public"
},
{
"id": "5b007ceb67e5f2002cd2622b",
"createdAt": 1526758635,
"source": {
"name": "Swarm for iOS",
"url": "https:\/\/www.swarmapp.com"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/21628811_olqZV44Reqhog_IGDKmYK6oAhHU0PmwctViuGPN8ZQg.jpg",
"width": 1440,
"height": 1920,
"user": {
"id": "21628811",
"firstName": "Sophia",
"lastName": "V",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/21628811-QIRARK355AGYY10U.jpg"
}
},
"checkin": {
"id": "5b007cdc5c6838002d27dac5",
"createdAt": 1526758620,
"type": "checkin",
"timeZoneOffset": 60,
"with": [
{
"id": "146112235",
"firstName": "Nicos",
"lastName": "Savva",
"gender": "male",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/146112235-4DL42UNW5GSJMFLW.jpg"
}
}
]
},
"visibility": "public"
},
{
"id": "5a91ef748fb09e386ec677f3",
"createdAt": 1519513460,
"source": {
"name": "Foursquare for iOS",
"url": "https:\/\/foursquare.com\/download\/#\/iphone"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/148002631_UPWDGBODb9O-HLFVAybu2lfzTCkUGablGj1RmFMSSCo.jpg",
"width": 1440,
"height": 1920,
"user": {
"id": "148002631",
"firstName": "Miso",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/148002631_wYBesBrT_kXGtyu8p7snO84kyZ5NmHq-pk2GklIOovDbzWCWboqq4NuALSKwoxeU_wTsQisND.jpg"
}
},
"tip": {
"id": "5a7f8118f1fdaf5e43c6f1d5",
"createdAt": 1518305560,
"text": "You barely notice the grasshoppers, especially with crunchy tortillas...not sure what it adds other than curiosity!",
"type": "user",
"canonicalUrl": "https:\/\/foursquare.com\/item\/5a7f8118f1fdaf5e43c6f1d5",
"likes": {
"count": 0,
"groups": []
},
"like": false,
"logView": true,
"agreeCount": 0,
"disagreeCount": 0,
"todo": {
"count": 0
}
},
"visibility": "public"
},
{
"id": "5a91d5b10f013c06c58324bb",
"createdAt": 1519506865,
"source": {
"name": "Foursquare for iOS",
"url": "https:\/\/foursquare.com\/download\/#\/iphone"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/148002631_Ck3lC-u3xNtb5uh3ObDk-_Zpkauh6EGGFZ-eD6x6Q9k.jpg",
"width": 1920,
"height": 1440,
"user": {
"id": "148002631",
"firstName": "Miso",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/148002631_wYBesBrT_kXGtyu8p7snO84kyZ5NmHq-pk2GklIOovDbzWCWboqq4NuALSKwoxeU_wTsQisND.jpg"
}
},
"tip": {
"id": "5a91d59ff4b52533fc2a7aeb",
"createdAt": 1519506847,
"text": "My favourite Mexican place in London. Cheerful, cosy place. Really well done classic dishe, great flavour, great vegetarian options too.",
"type": "user",
"canonicalUrl": "https:\/\/foursquare.com\/item\/5a91d59ff4b52533fc2a7aeb",
"likes": {
"count": 0,
"groups": []
},
"like": false,
"logView": true,
"agreeCount": 1,
"disagreeCount": 0,
"lastVoteText": "Upvoted Sep 22",
"lastUpvoteTimestamp": 1537619761,
"todo": {
"count": 0
}
},
"visibility": "public"
},
{
"id": "5a7f80ac1fa7634a4c2c24ec",
"createdAt": 1518305452,
"source": {
"name": "Foursquare for iOS",
"url": "https:\/\/foursquare.com\/download\/#\/iphone"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/148002631_h3I_rCAEk5-F-L_iXFTgnKK36wCWsPzXPCgGuLI6Qlo.jpg",
"width": 1920,
"height": 1440,
"user": {
"id": "148002631",
"firstName": "Miso",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/148002631_wYBesBrT_kXGtyu8p7snO84kyZ5NmHq-pk2GklIOovDbzWCWboqq4NuALSKwoxeU_wTsQisND.jpg"
}
},
"visibility": "public"
},
{
"id": "5a7f80a21953f35cd34e394a",
"createdAt": 1518305442,
"source": {
"name": "Foursquare for iOS",
"url": "https:\/\/foursquare.com\/download\/#\/iphone"
},
"prefix": "https:\/\/fastly.4sqi.net\/img\/general\/",
"suffix": "\/148002631_RN-bs3l4WpIlAHKe7imqalCRG2gWupWrGOerFQn9nTk.jpg",
"width": 1440,
"height": 1920,
"user": {
"id": "148002631",
"firstName": "Miso",
"gender": "female",
"photo": {
"prefix": "https:\/\/fastly.4sqi.net\/img\/user\/",
"suffix": "\/148002631_wYBesBrT_kXGtyu8p7snO84kyZ5NmHq-pk2GklIOovDbzWCWboqq4NuALSKwoxeU_wTsQisND.jpg"
}
},
"visibility": "public"
}
],
"dupesRemoved": 0
}
}
}

View File

@ -1,7 +1,8 @@
const { reduceExplore, reduceYelp, reduceFullFS } = require('../server/reducers/rightbyme'); const { reduceExplore, reduceYelp, reduceFullFS, reducePhotos } = require('../server/reducers/rightbyme');
const expect = require('expect.js'); const expect = require('expect.js');
const jsonfile = require('jsonfile');
const exploreFS = { const exploreFS = {
'id': '4c233b549a67a5937ea7dd87', 'id': '4c233b549a67a5937ea7dd87',
@ -533,6 +534,21 @@ const goodFS = {
'tips': ['Bring your O2 or Vodafone phone so you can actually get a signal to check in!', 'a good exscuse for a check in!'] 'tips': ['Bring your O2 or Vodafone phone so you can actually get a signal to check in!', 'a good exscuse for a check in!']
}; };
const photos = jsonfile.readFileSync('test/data/photos/photo001.json');
const photosResult = { 'images':
[ 'https://fastly.4sqi.net/img/general/640x853/1948074_vPwEHeg5do6Ee-er4kuZyduHV-vd-Q6J-65vn_ku3LQ.jpg',
'https://fastly.4sqi.net/img/general/640x853/436240_lf_O0Vb0OIow6QEsgzBO3I9duEs38jPXQJvv9RD9y9Q.jpg',
'https://fastly.4sqi.net/img/general/640x853/436240_Y5RkVVP5n24lq4ecN8ugzRgxHAQKvOlmoSJylrbn6Ps.jpg',
'https://fastly.4sqi.net/img/general/640x853/436240_ssnIV5giiAVgdAzC-wLu3eO7uO-aUQ2Cwxn4XYFyGXg.jpg',
'https://fastly.4sqi.net/img/general/640x853/436240_urUZKDPWGff2wrbkkA0nnDAwMa9lRoKXpnF9MOUfhWg.jpg',
'https://fastly.4sqi.net/img/general/640x853/51219901_GqEDfQTgqsYk1MM2L8BrJaw2ie7XG6slHO7VksIkyAs.jpg',
'https://fastly.4sqi.net/img/general/640x853/38350236_XF4cfY2mnz6EheplrEtL1Y-SCyI0aoCe-uRzIabo-dY.jpg',
'https://fastly.4sqi.net/img/general/640x853/21628811_olqZV44Reqhog_IGDKmYK6oAhHU0PmwctViuGPN8ZQg.jpg',
'https://fastly.4sqi.net/img/general/640x853/148002631_UPWDGBODb9O-HLFVAybu2lfzTCkUGablGj1RmFMSSCo.jpg',
'https://fastly.4sqi.net/img/general/640x480/148002631_Ck3lC-u3xNtb5uh3ObDk-_Zpkauh6EGGFZ-eD6x6Q9k.jpg',
'https://fastly.4sqi.net/img/general/640x480/148002631_h3I_rCAEk5-F-L_iXFTgnKK36wCWsPzXPCgGuLI6Qlo.jpg',
'https://fastly.4sqi.net/img/general/640x853/148002631_RN-bs3l4WpIlAHKe7imqalCRG2gWupWrGOerFQn9nTk.jpg' ] };
describe('Right By Me', () => { describe('Right By Me', () => {
describe('Explore', () => { describe('Explore', () => {
it('should gracefully handle no data', done => { it('should gracefully handle no data', done => {
@ -580,6 +596,14 @@ describe('Right By Me', () => {
}); });
}); });
describe('Convert photos', () => {
it('should process data correctly', done => {
expect(reducePhotos(photos)).to.eql(photosResult);
done();
});
});
describe('Merging', () => { describe('Merging', () => {
it('should gracefully handle no data', done => { it('should gracefully handle no data', done => {
const m = Object.assign(reduceExplore(), reduceFullFS()); const m = Object.assign(reduceExplore(), reduceFullFS());

File diff suppressed because it is too large Load Diff