Exception: Octokit::Error
- Inherits:
-
StandardError
- Object
- StandardError
- Octokit::Error
- Defined in:
- lib/octokit/error.rb
Overview
Custom error class for rescuing from all GitHub errors
Direct Known Subclasses
Instance Attribute Summary collapse
-
#context ⇒ Object
readonly
Returns the value of attribute context.
Class Method Summary collapse
-
.from_response(response) ⇒ Octokit::Error
Returns the appropriate Octokit::Error subclass based on status and response message.
Instance Method Summary collapse
-
#build_error_context ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity.
-
#documentation_url ⇒ String
Documentation URL returned by the API for some errors.
-
#errors ⇒ Array<Hash>
Array of validation errors.
-
#initialize(response = nil) ⇒ Error
constructor
A new instance of Error.
-
#response_body ⇒ String
Body returned by the GitHub server.
-
#response_headers ⇒ Hash
Headers returned by the GitHub server.
-
#response_status ⇒ Integer
Status code returned by the GitHub server.
Constructor Details
#initialize(response = nil) ⇒ Error
Returns a new instance of Error.
49 50 51 52 53 |
# File 'lib/octokit/error.rb', line 49 def initialize(response = nil) @response = response super() build_error_context end |
Instance Attribute Details
#context ⇒ Object (readonly)
Returns the value of attribute context.
6 7 8 |
# File 'lib/octokit/error.rb', line 6 def context @context end |
Class Method Details
.from_response(response) ⇒ Octokit::Error
Returns the appropriate Octokit::Error subclass based on status and response message
rubocop:disable Metrics/CyclomaticComplexity
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/octokit/error.rb', line 14 def self.from_response(response) status = response[:status].to_i body = response[:body].to_s headers = response[:response_headers] if klass = case status when 400 then Octokit::BadRequest when 401 then error_for_401(headers) when 403 then error_for_403(body) when 404 then error_for_404(body) when 405 then Octokit::MethodNotAllowed when 406 then Octokit::NotAcceptable when 409 then Octokit::Conflict when 410 then Octokit::Deprecated when 415 then Octokit::UnsupportedMediaType when 422 then error_for_422(body) when 451 then Octokit::UnavailableForLegalReasons when 400..499 then Octokit::ClientError when 500 then Octokit::InternalServerError when 501 then Octokit::NotImplemented when 502 then Octokit::BadGateway when 503 then Octokit::ServiceUnavailable when 500..599 then Octokit::ServerError end klass.new(response) end end |
Instance Method Details
#build_error_context ⇒ Object
rubocop:enable Metrics/CyclomaticComplexity
43 44 45 46 47 |
# File 'lib/octokit/error.rb', line 43 def build_error_context if RATE_LIMITED_ERRORS.include?(self.class) @context = Octokit::RateLimit.from_response(@response) end end |
#documentation_url ⇒ String
Documentation URL returned by the API for some errors
58 59 60 |
# File 'lib/octokit/error.rb', line 58 def documentation_url data[:documentation_url] if data.is_a? Hash end |
#errors ⇒ Array<Hash>
Array of validation errors
132 133 134 135 136 137 138 |
# File 'lib/octokit/error.rb', line 132 def errors if data.is_a?(Hash) data[:errors] || [] else [] end end |
#response_body ⇒ String
Body returned by the GitHub server.
157 158 159 |
# File 'lib/octokit/error.rb', line 157 def response_body @response[:body] end |
#response_headers ⇒ Hash
Headers returned by the GitHub server.
150 151 152 |
# File 'lib/octokit/error.rb', line 150 def response_headers @response[:response_headers] end |
#response_status ⇒ Integer
Status code returned by the GitHub server.
143 144 145 |
# File 'lib/octokit/error.rb', line 143 def response_status @response[:status] end |