Skip to content

Commit

Permalink
feat: Make generator compatible with v2 API (fossasia#2177)
Browse files Browse the repository at this point in the history
  • Loading branch information
iamareebjamal authored Feb 29, 2020
1 parent c147f7b commit 40b5989
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 148 deletions.
1 change: 0 additions & 1 deletion src/.eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@
"keyword-spacing": [2, {"before": true, "after": true}],
"wrap-regex": 1,

"arrow-parens": [2, "always"],
"arrow-spacing": [2, {"before": true, "after": true}],
"constructor-super": 2,
"generator-star-spacing": [2, {"before": false, "after": true}],
Expand Down
32 changes: 18 additions & 14 deletions src/backend/dist.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const streamBuffer = require('stream-buffers');
const path = require('path');
const recursive = require('recursive-readdir');
const sharp = require('sharp');
const JSONAPIDeserializer = require('jsonapi-serializer').Deserializer;

const distPath = __dirname + '/../../dist';
const uploadsPath = __dirname + '/../../uploads';
Expand Down Expand Up @@ -105,12 +106,19 @@ const downloadJsonFromEventyay = function(appPath, endpoint, jsonFile, cb) {
return cb(err);
}

fs.writeFile(fileName, JSON.parse(JSON.stringify(response.body)), 'utf-8', function(error) {
if (error) {
console.log(error);
return cb(error);
}
cb();
const json = JSON.parse(body);

new JSONAPIDeserializer().deserialize(json).then(data => {
fs.writeFile(fileName, JSON.stringify(data), 'utf-8', function(error) {
if (error) {
console.log(error);
return cb(error);
}
cb();
});
}).catch(error => {
console.error('Error while parsing JSONAPI response', error);
cb(error);
});
});
};
Expand Down Expand Up @@ -589,17 +597,13 @@ module.exports = {

Object.keys(jsonsUrl).forEach(function(key) {
if (key === 'sessions') {
jsonsUrl[key] = jsonsUrl[key] + '?include=track,microlocation,session-type,speakers' +
'&fields[track]=id,name' +
'&fields[speaker]=id,name' +
'&fields[microlocation]=id,name' +
'&page[size]=0';
jsonsUrl[key] = jsonsUrl[key] + '?include=track,microlocation,session-type,speakers&page[size]=0';
} else if (key === 'tracks') {
jsonsUrl[key] = jsonsUrl[key] + '?include=sessions&fields[session]=id,title';
jsonsUrl[key] = jsonsUrl[key] + '?include=sessions&page[size]=0';
} else if (key === 'event') {
jsonsUrl[key] = endpoint + '?include=social-links,event-copyright';
jsonsUrl[key] = endpoint + '?include=social-links,event-copyright&page[size]=0';
} else if (key === 'speakers') {
jsonsUrl[key] = jsonsUrl[key] + '?include=sessions&fields[session]=id,title';
jsonsUrl[key] = jsonsUrl[key] + '?include=sessions&page[size]=0';
}
});
} else if (endpoint.search('https://open-event-api-dev.herokuapp.com') !== -1 && apiVersion === 'api_v2') {
Expand Down
136 changes: 3 additions & 133 deletions src/backend/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,45 +119,6 @@ function transformData(sessions, speakers, event, sponsors, tracksData, roomsDat
});
}

async function getData(entity, prop, cb) {
await request.get({url: 'https://open-event-api-dev.herokuapp.com' + entity.relationships[prop].links.related}, function(err, response) {
if (err) {
console.log(err);
}
entity.attributes[prop] = JSON.parse(response.body).data;
return new Promise((resolve) => {
resolve(cb());
});
});
}

function getAllData(data, prop, cb) {
async.each(data, function(entity, callback) {
request.get({url: 'https://open-event-api-dev.herokuapp.com' + entity.relationships[prop].links.related}, function(err, response) {
if (err) {
console.log(err);
}
const body = JSON.parse(response.body).data;

if (prop !== 'session-type' && prop !== 'track' && body) {
entity.attributes[prop] = [];
body.forEach(function(val) {
val.attributes.id = val.id;
entity.attributes[prop].push(val.attributes);
});
} else if (body) {
body.attributes.id = body.id;
entity.attributes[prop] = body.attributes;
} else {
entity.attributes[prop] = null;
}
callback();
});
}, function() {
cb();
});
}

function getJsonData(reqOpts, next) {
try {
const appFolder = reqOpts.email + '/' + fold.slugify(reqOpts.name);
Expand All @@ -174,100 +135,9 @@ function getJsonData(reqOpts, next) {
attendeesData = jsonfile.readFileSync(distJsonsPath + '/attendees');
}

if (reqOpts.datasource === 'eventapi' && reqOpts.apiVersion === 'api_v2' && reqOpts.apiendpoint.replace(/\/$/, '').search('https://open-event-api-dev.herokuapp.com') !== -1) {
const data = ['track', 'microlocation', 'session-type', 'speakers', 'sessions', 'social-links', 'event-copyright', 'speaker-sessions'];

async.each(data, function(child, cb) {
switch (child) {
case 'track' :
getAllData(sessionsData.data, 'track', cb);
break;
case 'microlocation':
getAllData(sessionsData.data, 'microlocation', cb);
break;
case 'session-type':
getAllData(sessionsData.data, 'session-type', cb);
break;
case 'speakers':
getAllData(sessionsData.data, 'speakers', cb);
break;
case 'sessions':
getAllData(tracksData.data, 'sessions', cb);
break;
case 'social-links':
getData(eventData.data, 'social-links', cb);
break;
case 'event-copyright':
getData(eventData.data, 'event-copyright', cb);
break;
case 'speaker-sessions':
getAllData(speakersData.data, 'sessions', cb);
break;
default:
break;
}
}, function() {
const completeData = ['sessions', 'speakers', 'sponsors', 'tracks', 'rooms'];
const sessions = [];
const speakers = [];
const sponsors = [];
const tracks = [];
const rooms = [];
const event = eventData.data.attributes;

async.each(completeData, function(child, cb) {
switch (child) {
case 'sessions':
sessionsData.data.forEach(function(session) {
session.attributes.id = session.id;
sessions.push(session.attributes);
});
cb();
break;
case 'speakers':
speakersData.data.forEach(function(speaker) {
speaker.attributes.id = speaker.id;
speakers.push(speaker.attributes);
});
cb();
break;
case 'sponsors':
sponsorsData.data.forEach(function(sponsor) {
sponsor.attributes.id = sponsor.id;
sponsors.push(sponsor.attributes);
});
cb();
break;
case 'tracks':
tracksData.data.forEach(function(track) {
track.attributes.id = track.id;
tracks.push(track.attributes);
});
cb();
break;

case 'rooms':
roomsData.data.forEach(function(room) {
room.attributes.id = room.id;
rooms.push(room.attributes);
});
cb();
break;

default:
break;
}
}, function() {
return transformData(sessions, speakers, event, sponsors, tracks, rooms, attendeesData, reqOpts, function(addedData) {
next(null, addedData);
});
});
});
} else {
return transformData(sessionsData, speakersData, eventData, sponsorsData, tracksData, roomsData, attendeesData, reqOpts, function(data) {
next(null, data);
});
}
return transformData(sessionsData, speakersData, eventData, sponsorsData, tracksData, roomsData, attendeesData, reqOpts, function(data) {
next(null, data);
});
} catch (err) {
return next(err);
}
Expand Down

0 comments on commit 40b5989

Please sign in to comment.