Class: Danger::RequestSources::BitbucketCloudAPI

Inherits:
Object
  • Object
show all
Defined in:
lib/danger/request_sources/bitbucket_cloud_api.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(repo_slug, pull_request_id, branch_name, environment) ⇒ BitbucketCloudAPI

Returns a new instance of BitbucketCloudAPI.



10
11
12
13
14
15
16
17
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 10

def initialize(repo_slug, pull_request_id, branch_name, environment)
  @username = environment["DANGER_BITBUCKETCLOUD_USERNAME"]
  @password = environment["DANGER_BITBUCKETCLOUD_PASSWORD"]
  self.project, self.slug = repo_slug.split("/")
  self.access_token = fetch_access_token(environment)
  self.pull_request_id = pull_request_id || fetch_pr_from_branch(branch_name)
  self.host = "https://bitbucket.org/"
end

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



8
9
10
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 8

def access_token
  @access_token
end

#hostObject

Returns the value of attribute host.



8
9
10
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 8

def host
  @host
end

#projectObject

Returns the value of attribute project.



8
9
10
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 8

def project
  @project
end

#pull_request_idObject

Returns the value of attribute pull_request_id.



8
9
10
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 8

def pull_request_id
  @pull_request_id
end

#slugObject

Returns the value of attribute slug.



8
9
10
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 8

def slug
  @slug
end

Instance Method Details

#credentials_given?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 29

def credentials_given?
  @username && !@username.empty? && @password && !@password.empty?
end

#delete_comment(id) ⇒ Object



47
48
49
50
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 47

def delete_comment(id)
  uri = URI("#{pr_api_endpoint}/comments/#{id}")
  delete(uri)
end

#fetch_last_commentsObject



42
43
44
45
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 42

def fetch_last_comments
  uri = URI("#{pr_api_endpoint}/activity?limit=1000")
  fetch_json(uri)[:values].select { |v| v[:comment] }.map { |v| v[:comment] }
end

#fetch_pr_jsonObject



37
38
39
40
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 37

def fetch_pr_json
  uri = URI(pr_api_endpoint)
  fetch_json(uri)
end

#inspectObject



19
20
21
22
23
24
25
26
27
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 19

def inspect
  inspected = super

  if @password
    inspected = inspected.sub! @password, "********".freeze
  end

  inspected
end

#post_comment(text) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 52

def post_comment(text)
  uri = URI("#{pr_api_endpoint}/comments")
  body = {
    content: { 
      raw: text
    }
  }.to_json
  post(uri, body)
end

#pull_requestObject



33
34
35
# File 'lib/danger/request_sources/bitbucket_cloud_api.rb', line 33

def pull_request(*)
  fetch_pr_json
end