Sha256: c3aabd853ef33dba82d8eea3172c4a2dd32716200a614e255d207c28468717de

Contents?: true

Size: 1.84 KB

Versions: 9

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

module Geet
  module Github
    # See AbstractIssue for the circular dependency issue notes.
    autoload :AbstractIssue, File.expand_path('abstract_issue', __dir__)

    class PR < AbstractIssue
      # See https://developer.github.com/v3/pulls/#create-a-pull-request
      #
      def self.create(title, description, head, api_interface)
        api_path = 'pulls'

        if api_interface.upstream?
          account = Geet::Github::Account.new(api_interface)
          head = "#{account.authenticated_user}:#{head}"
        end

        request_data = { title: title, body: description, head: head, base: 'master' }

        response = api_interface.send_request(api_path, data: request_data)

        number, title, link = response.fetch_values('number', 'title', 'html_url')

        new(number, api_interface, title, link)
      end

      # See https://developer.github.com/v3/pulls/#list-pull-requests
      #
      def self.list(api_interface, head: nil)
        api_path = 'pulls'
        request_params = { head: head } if head

        response = api_interface.send_request(api_path, params: request_params, multipage: true)

        response.map do |issue_data|
          number = issue_data.fetch('number')
          title = issue_data.fetch('title')
          link = issue_data.fetch('html_url')

          new(number, api_interface, title, link)
        end
      end

      # See https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button
      #
      def merge
        api_path = "pulls/#{number}/merge"

        @api_interface.send_request(api_path, http_method: :put)
      end

      def request_review(reviewers)
        api_path = "pulls/#{number}/requested_reviewers"
        request_data = { reviewers: reviewers }

        @api_interface.send_request(api_path, data: request_data)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
geet-0.3.2 lib/geet/github/pr.rb
geet-0.3.1 lib/geet/github/pr.rb
geet-0.3.0 lib/geet/github/pr.rb
geet-0.2.1 lib/geet/github/pr.rb
geet-0.2.0 lib/geet/github/pr.rb
geet-0.1.12 lib/geet/github/pr.rb
geet-0.1.11 lib/geet/github/pr.rb
geet-0.1.10 lib/geet/github/pr.rb
geet-0.1.9 lib/geet/github/pr.rb