class Danger::CircleAPI
Public Instance Methods
client()
click to toggle source
# File lib/danger/ci_source/circle_api.rb, line 30 def client @client ||= Faraday.new(url: "https://circleci.com/api/v1") end
fetch_build(repo_slug, build_number, token)
click to toggle source
Make the API call, and parse the JSON
# File lib/danger/ci_source/circle_api.rb, line 44 def fetch_build(repo_slug, build_number, token) url = "project/#{repo_slug}/#{build_number}" params = { "circle-token" => token } response = client.get url, params, accept: "application/json" JSON.parse(response.body, symbolize_names: true) end
fetch_pull_request_url(repo_slug, build_number, token)
click to toggle source
Ask the API if the commit is inside a PR
# File lib/danger/ci_source/circle_api.rb, line 35 def fetch_pull_request_url(repo_slug, build_number, token) build_json = fetch_build(repo_slug, build_number, token) pull_requests = build_json[:pull_requests] return nil unless pull_requests && pull_requests.first pull_requests.first[:url] end
pull_request?(env)
click to toggle source
Determine if there’s a PR
attached to this commit, and return a bool
# File lib/danger/ci_source/circle_api.rb, line 7 def pull_request?(env) url = pull_request_url(env) return !url.nil? end
pull_request_url(env)
click to toggle source
Determine if there’s a PR
attached to this commit, and return the url if so
# File lib/danger/ci_source/circle_api.rb, line 14 def pull_request_url(env) url = env["CI_PULL_REQUEST"] if url.nil? && !env["CIRCLE_PROJECT_USERNAME"].nil? && !env["CIRCLE_PROJECT_REPONAME"].nil? repo_slug = env["CIRCLE_PROJECT_USERNAME"] + "/" + env["CIRCLE_PROJECT_REPONAME"] if !env["CIRCLE_PR_NUMBER"].nil? host = env["DANGER_GITHUB_HOST"] || "github.com" url = "https://" + host + "/" + repo_slug + "/pull/" + env["CIRCLE_PR_NUMBER"] else token = env["DANGER_CIRCLE_CI_API_TOKEN"] url = fetch_pull_request_url(repo_slug, env["CIRCLE_BUILD_NUM"], token) end end url end