class Doorkeeper::OAuth::ErrorResponse

def self.from_request(request, attributes = {})

def self.from_request(request, attributes = {})
  new(
    attributes.merge(
      name: request.error,
      state: request.try(:state),
      redirect_uri: request.try(:redirect_uri)
    )
  )
end

def authenticate_info

def authenticate_info
  %(Bearer realm="#{realm}", error="#{name}", error_description="#{description}")
end

def body

def body
  {
    error: name,
    error_description: description,
    state: state,
  }.reject { |_, v| v.blank? }
end

def configuration

def configuration
  Doorkeeper.configuration
end

def exception_class

def exception_class
  raise NotImplementedError, "error response must define #exception_class"
end

def headers

def headers
  {
    "Cache-Control" => "no-store",
    "Pragma" => "no-cache",
    "Content-Type" => "application/json; charset=utf-8",
    "WWW-Authenticate" => authenticate_info,
  }
end

def initialize(attributes = {})

def initialize(attributes = {})
  @error = OAuth::Error.new(*attributes.values_at(:name, :state))
  @redirect_uri = attributes[:redirect_uri]
  @response_on_fragment = attributes[:response_on_fragment]
end

def raise_exception!

def raise_exception!
  raise exception_class.new(self), description
end

def redirect_uri

def redirect_uri
  if @response_on_fragment
    Authorization::URIBuilder.uri_with_fragment @redirect_uri, body
  else
    Authorization::URIBuilder.uri_with_query @redirect_uri, body
  end
end

def redirectable?

def redirectable?
  name != :invalid_redirect_uri && name != :invalid_client &&
    !URIChecker.oob_uri?(@redirect_uri)
end

def status

def status
  if name == :invalid_client
    :unauthorized
  else
    :bad_request
  end
end