Sha256: 5ae9f6e30308842915d753164903d5252f9079967b70f6483fba1d4c7fdaf0ac

Contents?: true

Size: 1.81 KB

Versions: 18

Compression:

Stored size: 1.81 KB

Contents

module Lita
  module GithubPrList
    class CommentHook
      attr_accessor :request, :response, :payload, :commenter, :issue_owner, :issue_title, :issue_body, :status,
                    :issue_html_url, :redis

      def initialize(params = {})
        self.response = params.fetch(:response, nil)
        self.request = params.fetch(:request, nil)
        self.redis = params.fetch(:redis, nil)

        raise "invalid params in #{self.class.name}" if response.nil? || request.nil? || redis.nil?

        # https://developer.github.com/v3/activity/events/types/#issuecommentevent
        self.payload = JSON.parse(request.body.read)
        self.commenter = redis.get("alias:#{payload["sender"]["login"]}") || payload["sender"]["login"]
        self.issue_owner = redis.get("alias:#{payload["issue"]["user"]["login"]}") || payload["issue"]["user"]["login"]
        self.issue_title = payload["issue"]["title"]
        self.issue_html_url = payload["issue"]["html_url"]
        self.issue_body = payload["comment"]["body"]
      end

      def message
        status = Status.new({comment: issue_body}).comment_status

        if !status.empty?
          if status[:emoji] == Lita::GithubPrList::Status::PASS_EMOJI
            "@#{issue_owner} your pull request: #{issue_title} has passed. #{issue_html_url}"
          elsif status[:emoji] == Lita::GithubPrList::Status::REVIEW_EMOJI
            "@#{commenter} is currently reviewing: #{issue_title}. #{issue_html_url}"
          elsif status[:emoji] == Lita::GithubPrList::Status::FAIL_EMOJI
            "@#{issue_owner} your pull request: #{issue_title} has failed. #{issue_html_url}"
          elsif status[:emoji] == Lita::GithubPrList::Status::FIXED_EMOJI
            "#{issue_title} has been fixed: #{issue_html_url}"
          end
        else
          nil
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
lita-github_pr_list-0.0.21 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.20 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.19 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.16 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.15 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.14 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.13 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.12 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.11 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.10 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.9 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.8 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.7 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.6 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.5 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.4 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.2 lib/lita/github_pr_list/comment_hook.rb
lita-github_pr_list-0.0.1 lib/lita/github_pr_list/comment_hook.rb