class Escobar::GitHub::DeploymentError

Consolidate GitHub deployment api failures for easier messaging

Attributes

repo[RW]
required_commit_contexts[RW]
response[RW]

Public Class Methods

new(repo, response, required_commit_contexts) click to toggle source
# File lib/escobar/github/deployment_error.rb, line 7
def initialize(repo, response, required_commit_contexts)
  @repo = repo
  @response = response
  @required_commit_contexts = required_commit_contexts
end

Public Instance Methods

default_message() click to toggle source
# File lib/escobar/github/deployment_error.rb, line 36
def default_message
  "Unable to create GitHub deployments for #{repo}: #{response_message}"
end
missing_contexts() click to toggle source
# File lib/escobar/github/deployment_error.rb, line 28
def missing_contexts
  required_commit_contexts - succeeded_required_contexts
end
missing_contexts?() click to toggle source
# File lib/escobar/github/deployment_error.rb, line 13
def missing_contexts?
  missing_contexts.any?
end
response_message() click to toggle source
# File lib/escobar/github/deployment_error.rb, line 32
def response_message
  response["message"]
end
succeeded_required_contexts() click to toggle source
# File lib/escobar/github/deployment_error.rb, line 17
def succeeded_required_contexts
  error = response.fetch("errors", [])[0]
  return [] unless error && error["field"] == "required_contexts"
  contexts = error["contexts"]
  contexts.each_with_object([]) do |context, succeeded|
    success = (context["state"] == "success")
    required = required_commit_contexts.include?(context["context"])
    succeeded << context["context"] if required && success
  end
end