class Codestatus::Repositories::BitbucketRepository
Constants
- BITBUCKET_API_ENDPOINT
Public Instance Methods
html_url()
click to toggle source
# File lib/codestatus/repositories/bitbucket_repository.rb, line 29 def html_url repository.dig('links', 'html', 'href') end
status(ref = main_branch)
click to toggle source
developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
# File lib/codestatus/repositories/bitbucket_repository.rb, line 9 def status(ref = main_branch) statuses = statuses(ref) sha = statuses['values'].map {|x| x.dig('commit', 'hash') }.compact.first states = statuses['values'].map { |status| status['state'] } state = if states.any? { |x| ['STOPPED', 'FAILED'].include?(x) } BuildStatus::FAILURE elsif states.empty? || states.all? { |x| x == 'INPROGRESS' } BuildStatus::PENDING elsif states.all? { |x| x == 'SUCCESSFUL' } BuildStatus::SUCCESS else BuildStatus::UNDEFINED end BuildStatus.new(sha: sha, status: state) end
Private Instance Methods
client()
click to toggle source
# File lib/codestatus/repositories/bitbucket_repository.rb, line 47 def client RestClient end
main_branch()
click to toggle source
# File lib/codestatus/repositories/bitbucket_repository.rb, line 35 def main_branch repository.dig('mainbranch', 'name') end
repository()
click to toggle source
# File lib/codestatus/repositories/bitbucket_repository.rb, line 39 def repository @repository ||= JSON.parse(client.get(repository_uri)) end
repository_uri()
click to toggle source
# File lib/codestatus/repositories/bitbucket_repository.rb, line 43 def repository_uri File.join(BITBUCKET_API_ENDPOINT, 'repositories', slug) end
statuses(ref)
click to toggle source
example: https://api.bitbucket.org/2.0/repositories/atlassian/aui/commit/master/statuses
# File lib/codestatus/repositories/bitbucket_repository.rb, line 53 def statuses(ref) @statuses ||= JSON.parse(client.get(statuses_uri(ref))) end
statuses_uri(ref)
click to toggle source
# File lib/codestatus/repositories/bitbucket_repository.rb, line 57 def statuses_uri(ref) File.join(BITBUCKET_API_ENDPOINT, 'repositories', slug, 'commit', ref, 'statuses') end