fileList.forEach(function(filename) { const content = fs.readFileSync(options.dirname + '/' + filename, 'utf-8'); mdparser.default(content, function(err, result) { const newDoc = { _id: uuid.v1(), filename: filename, attributes: result.attributes, body: result.body }; if(options.compileHtml) { newDoc.html = result.html; } if(options.parseDate) { const r = /\d\d\d\d-\d\d-\d\d/g; let fileDate = moment(r.exec(filename)[0] + ' 12Z'); newDoc.datetime = { locale: fileDate.toLocaleString(), iso: fileDate.toISOString(), date: fileDate.format('DD'), monthSym: fileDate.format('MMM'), month: fileDate.format('MM'), year: fileDate.format('YYYY') }; } docList.push(newDoc); }); });
app.get('/getSomeFileMd', function(req, res) { parser(content, function(err, result) { var obj = {}; obj.att = result.attributes; obj.content = result.body; res.send(JSON.stringify(obj)); // console.log('the original body:'); // console.log(result.body); // // console.log('the html:'); // console.log(result.html); // // console.log('the front matter:'); // console.dir(result.attributes); }) });
router.post('/delivery', function (req, res) { var hmac, calculatedSignature, payload = req.body; hmac = crypto.createHmac('sha1', config.github.secret); hmac.update(JSON.stringify(payload)); calculatedSignature = 'sha1=' + hmac.digest('hex'); if (req.headers['x-hub-signature'] !== calculatedSignature) { res.status(403).send('Forbidden'); } else { if (payload.action === 'labeled') { if (payload.label.name === 'talk proposal') { var doc = { '_id': 'talk-' + payload.issue.id, 'type': 'talk', 'title': payload.issue.title, 'speaker': { 'github': payload.issue.user.login, 'gravatar': payload.issue.user.gravatar_id, 'portrait': payload.issue.user.avatar_url } }; parser(payload.issue.body, function (error, result) { if (error) { debug('parser', error); } doc.description = result.body; if (result.attributes.language) { doc.language = result.attributes.language; } if (result.attributes.level) { doc.level = result.attributes.level; } if (result.attributes.tags) { doc.tags = result.attributes.tags; } if (result.attributes.twitter) { doc.speaker.twitter = result.attributes.twitter; } if (payload.issue.milestone) { doc.event = payload.issue.milestone.title; checkAndCreateEvent(payload.issue.milestone, function (error, event) { if (error) { debug('event', error); res.status(500).send('Couldn\'t store data'); } else { if (event) { doc.event = event._id; } db.insert(doc, function (error, success) { if (error) { debug('talk insert', error); res.status(500).send('Couldn\'t store data'); } else { res.status(200).send('ok'); } }); } }); } else { db.insert(doc, function (error, success) { if (error) { debug('talk insert', error); res.status(500).send('Couldn\'t store data'); } else { res.status(200).send('ok'); } }); } }); } else { res.status(200).send('Thanks.'); } } else if (payload.action === 'closed') { if (payload.issue.milestone) { checkAndCreateEvent(payload.issue.milestone, function (error, event) { if (error) { debug('event', error); res.status(500).send('Couldn\'t store data'); } else { db.get('talk-' + payload.issue.id, function (error, doc) { if (error) { debug('talk get', error); } doc.event = event._id; db.insert(doc, function (error, success) { if (error) { debug('talk insert', error); res.status(500).send('Couldn\'t store data'); } else { res.status(200).send('ok'); } }); }); } }); } else { res.status(200).send('Thanks.'); } } else { res.status(200).send(); } } });
}, function(error, speaker) { debug('GitHub:getFrom():' + speaker.login); if (error) { return reject(new Error(error)); } // if this is an event from the planning repo, create a new event if (payload.labelMap.indexOf(config.labels.event) > -1) { debug('received planning event'); parser(payload.issue.body, function(error, body) { if (error) { return reject(new Error(error)); } if (!body.attributes && !body.attributes.date) { return reject(new Error('invalid event. Date missing.')); } var eventDate = moment.utc(body.attributes.date, config.date_format).format('YYYY-MM-DD'); var eventTime; if (body.attributes.time) { if (body.attributes.time.indexOf('.') > -1) { eventTime = body.attributes.time.replace(',', ':'); } else { eventTime = body.attributes.time; } } else { eventTime = config.schema.default_start_time; } var event = config.schema.default_event; event.startDate = eventDate + 'T' + eventTime + ':00Z'; event.id = moment(event.startDate).format('YYYYMMDD') + '-' + S(body.attributes.name).slugify().s; event.organizer = config.schema.default_organizer; event.github = payload.issue.url; event.url = config.schema.default_event_url + event.id + '.html'; event.name = body.attributes.name; if (body.attributes.address) { var address = body.attributes.address.split(','); event.location.address = { 'type': 'PostalAddress', 'addressLocality': address[2], 'postalCode': address[1], 'streetAddress': address[0] }; if (body.attributes.venue) { event.location.address.name = body.attributes.venue; } } milestone(payload, event, github); createOrUpdateEvent(payload, event, sender, github).then(function() { return resolve(event); }); }); } // update event if the issue is labeled as a talk if (payload.labelMap.indexOf(config.labels.talk) > -1) { debug('adding talk to event'); if (!payload.issue.milestone) { debug('no milestone found. Creating comment.'); github.issues.createComment({ user: config.github.org, repo: config.github.repos.speakers, number: payload.issue.number, body: '@' + payload.sender.login + ' please create an Event first, then label the issue as a talk.' }, function() { debug('GitHub:createComment()'); reject(new Error('missing_milestone')); }); } else { addTalk(payload, speaker, github).then(function(event) { return resolve(event); }); } } });