Files
koodiklinikka.fi/legacy-js/util.js
2019-09-23 15:39:18 +03:00

65 lines
1.7 KiB
JavaScript

'use strict';
var _ = require('lodash');
var githubEvent = require('parse-github-event');
var twitterText = require('twitter-text');
const isVisibleGithubEvent = ({type}) => type !== 'PushEvent' && type !== 'DeleteEvent';
module.exports = {
github(items) {
return items.filter(isVisibleGithubEvent).map((item) => {
_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
var template = _.template(githubEvent.parse(item).text);
var repository = `https://github.com/${item.repo.name}`;
var branch;
if(item.payload.ref) {
branch = item.payload.ref.replace('refs/heads/', '');
}
var message = template({
repository: `<a target="_blank" href="${repository}">${item.repo.name}</a>`,
branch: branch,
number: item.payload.number,
ref_type: item.payload.ref_type,
ref: item.payload.ref
});
var url = `https://github.com/${item.actor.login}`;
return {
user: item.actor.login,
userLink: url,
image: item.actor.avatar_url,
imageLink: url,
body: message,
timestamp: new Date(item.created_at),
url: message.url,
type: 'github'
};
});
},
twitter(items) {
return items.map((item) => {
if(item.retweeted) {
item = item.retweeted_status;
}
var url = `https://twitter.com/${item.user.screen_name}`;
return {
user: `@${item.user.screen_name}`,
userLink: url,
image: item.user.profile_image_url_https,
imageLink: url,
body: twitterText.autoLink(item.text),
timestamp: new Date(item.created_at),
type: 'twitter'
};
});
}
};