コード例 #1
0
ファイル: index.js プロジェクト: redbadger/md-to-couch
  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);
    });
  });
コード例 #2
0
ファイル: vinaas.js プロジェクト: vinaas/website
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);
  })

});
コード例 #3
0
ファイル: talks.js プロジェクト: gitter-badger/node
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();
    }
  }
});
コード例 #4
0
ファイル: events.js プロジェクト: iancrowther/gitevents-core
      }, 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);
            });
          }
        }
      });