jbox-web/redmine_git_hosting

View on GitHub
lib/redmine_git_hosting/patches/changeset_patch.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require_dependency 'changeset'

module RedmineGitHosting
  module Patches
    module ChangesetPatch
      def github_payload
        data = {}
        data[:id]        = revision
        data[:message]   = comments
        data[:timestamp] = committed_on
        data[:author]    = author_data
        data[:added]     = added_files
        data[:modified]  = modified_files
        data[:removed]   = removed_files
        data[:url]       = url_for_revision revision
        data
      end

      def author_data
        { name: author_name, email: author_email }
      end

      def author_name
        RedmineGitHosting::Utils::Git.author_name committer
      end

      def author_email
        RedmineGitHosting::Utils::Git.author_email committer
      end

      def added_files
        filechanges_by_action 'A'
      end

      def modified_files
        filechanges_by_action 'M'
      end

      def removed_files
        filechanges_by_action 'D'
      end

      def filechanges_by_action(action)
        filechanges.select { |c| c.action == action }.map(&:path)
      end

      def url_for_revision(revision)
        Rails.application.routes.url_helpers.url_for(
          controller: 'repositories', action: 'revision',
          id: project, repository_id: repository.identifier_param, rev: revision,
          only_path: false, host: Setting['host_name'], protocol: Setting['protocol']
        )
      end
    end
  end
end

unless Changeset.included_modules.include? RedmineGitHosting::Patches::ChangesetPatch
  Changeset.prepend RedmineGitHosting::Patches::ChangesetPatch
end