'use strict';

var _           = require('lodash');
var githubEvent = require('parse-github-event');
var twitterText = require('twitter-text');

module.exports = {
  github(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
    });

    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(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,
      imageLink: url,
      body: twitterText.autoLink(item.text),
      timestamp: new Date(item.created_at),
      type: 'twitter'
    };
  }
};
