lib/prpr/event/event.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'prpr/event/pull_request'
require 'json'

module Prpr
  module Event
    class UnknownEvent < StandardError
    end

    class Event
      class << self
        def events
          {
            commit_comment: CommitComment,
            issue_comment: IssueComment,
            pull_request: PullRequest,
            pull_request_review: PullRequestReview,
            pull_request_review_comment: PullRequestReviewComment,
            push: Push
          }
        end

        def parse(payload, event:)
          klass = events[event.to_sym]
          fail UnknownEvent, event unless klass

          klass.new(JSON.parse(payload))
        end
      end
    end
  end
end