let url = require('url');
let ejs = require('ejs');
let axios = require('axios');
module.exports = {
matches (url) {
return url.match(/^https?:\/\/(www\.)?github\.com\/.+\/.+/i);
},
async getPreviewData (link_url) {
try {
let pathname = url.parse(link_url).pathname;
let res = await axios.get('https://api.github.com/repos' + pathname);
let partialTemplate = `
' target='_blank' rel='noopener noreferer'>
<%= stargazers_count %> stargazer<%= stargazers_count === 1 ? '' : 's' %>
and
' target='_blank' rel='noopener noreferer'>
<%= forks_count %> fork<%= forks_count === 1 ? '' : 's' %>
`;
return {
title: res.data.full_name,
url: res.data.html_url,
description: res.data.description,
partial: ejs.render(partialTemplate, res.data),
image: res.data.owner.avatar_url
};
} catch (e) {
return null;
}
}
};