Sha256: 0b2498a9fcd5053d8b398bf313f408e73567c70c2b10055493cd5e4fe1d100ad

Contents?: true

Size: 1.71 KB

Versions: 4

Compression:

Stored size: 1.71 KB

Contents

require 'pra/pull_source'
require 'pra/pull_request'
require 'rest_client'
require 'json'

module Pra
  class StashPullSource < Pra::PullSource
    def pull_requests
      requests = []
      repositories.each do |repo_config|
        requests.concat(get_repo_pull_requests(repo_config))
      end
      return requests
    end

    def repositories
      @config["repositories"]
    end

    def get_repo_pull_requests(repository_config)
      requests = []
      JSON.parse(rest_api_pull_request_resource(repository_config).get)["values"].each do |request|
        requests << Pra::PullRequest.new(title: request["title"], from_reference: request["fromRef"]["id"], to_reference: request["toRef"]["id"], assignee: request["reviewers"].length > 0 ? request["reviewers"].first["user"]["name"] : nil, author: request["author"]["user"]["name"], link: "#{@config['protocol']}://#{@config['host']}#{request['link']['url']}", service_id: 'stash', repository: repository_config["repository_slug"])
      end
      return requests
    end

    def rest_api_pull_request_url(repository_config)
      if repository_config.has_key?("user_slug")
        "#{@config['protocol']}://#{@config['host']}/rest/api/1.0/users/#{repository_config["user_slug"]}/repos/#{repository_config["repository_slug"]}/pull-requests"
      else
        "#{@config['protocol']}://#{@config['host']}/rest/api/1.0/projects/#{repository_config["project_slug"]}/repos/#{repository_config["repository_slug"]}/pull-requests"
      end
    end

    def rest_api_pull_request_resource(repository_config)
      RestClient::Resource.new(rest_api_pull_request_url(repository_config), user: @config['username'], password: @config['password'], content_type: :json, accept: :json)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pra-1.5.1 lib/pra/stash_pull_source.rb
pra-1.5.0 lib/pra/stash_pull_source.rb
pra-1.4.0 lib/pra/stash_pull_source.rb
pra-1.3.0 lib/pra/stash_pull_source.rb