Class: Gitlab::Request
- Inherits:
-
Object
- Object
- Gitlab::Request
- Includes:
- HTTParty
- Defined in:
- lib/gitlab/request.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#endpoint ⇒ Object
Returns the value of attribute endpoint.
-
#private_token ⇒ Object
Returns the value of attribute private_token.
Class Method Summary collapse
-
.decode(response) ⇒ Object
Decodes a JSON response into Ruby object.
-
.parse(body) ⇒ Object
Converts the response body to an ObjectifiedHash.
Instance Method Summary collapse
-
#request_defaults(sudo = nil) ⇒ Object
Sets a base_uri and default_params for requests.
-
#validate(response) ⇒ Object
Checks the response code for common errors.
Instance Attribute Details
#endpoint ⇒ Object
Returns the value of attribute endpoint.
12 13 14 |
# File 'lib/gitlab/request.rb', line 12 def endpoint @endpoint end |
#private_token ⇒ Object
Returns the value of attribute private_token.
12 13 14 |
# File 'lib/gitlab/request.rb', line 12 def private_token @private_token end |
Class Method Details
.decode(response) ⇒ Object
Decodes a JSON response into Ruby object.
34 35 36 37 38 |
# File 'lib/gitlab/request.rb', line 34 def self.decode(response) return response ? JSON.load(response) : {} rescue JSON::ParserError raise Error::Parsing, 'The response is not a valid JSON' end |
.parse(body) ⇒ Object
Converts the response body to an ObjectifiedHash.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/gitlab/request.rb', line 15 def self.parse(body) body = decode(body) if body.is_a? Hash ObjectifiedHash.new body elsif body.is_a? Array PaginatedResponse.new(body.collect! { |e| ObjectifiedHash.new(e) }) elsif body true elsif !body false elsif body.nil? false else raise Error::Parsing, "Couldn't parse a response body" end end |
Instance Method Details
#request_defaults(sudo = nil) ⇒ Object
Sets a base_uri and default_params for requests.
74 75 76 77 78 |
# File 'lib/gitlab/request.rb', line 74 def request_defaults(sudo=nil) self.class.default_params sudo: sudo raise Error::MissingCredentials, 'Please set an endpoint to API' unless @endpoint self.class.default_params.delete(:sudo) if sudo.nil? end |
#validate(response) ⇒ Object
Checks the response code for common errors. Returns parsed response for successful requests.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/gitlab/request.rb', line 50 def validate(response) error_klass = case response.code when 400 then Error::BadRequest when 401 then Error::Unauthorized when 403 then Error::Forbidden when 404 then Error::NotFound when 405 then Error::MethodNotAllowed when 409 then Error::Conflict when 422 then Error::Unprocessable when 500 then Error::InternalServerError when 502 then Error::BadGateway when 503 then Error::ServiceUnavailable end raise error_klass, response if error_klass parsed = response.parsed_response parsed.client = self if parsed.respond_to?(:client=) parsed.parse_headers!(response.headers) if parsed.respond_to?(:parse_headers!) parsed end |