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
- #delete(path, options = {}) ⇒ Object
- #get(path, options = {}) ⇒ Object
- #post(path, options = {}) ⇒ Object
- #put(path, options = {}) ⇒ Object
-
#set_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) JSON.load response rescue JSON::ParserError raise Error::Parsing.new "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.new "Couldn't parse a response body" end end |
Instance Method Details
#delete(path, options = {}) ⇒ Object
58 59 60 61 62 |
# File 'lib/gitlab/request.rb', line 58 def delete(path, ={}) set_httparty_config() () validate self.class.delete(@endpoint + path, ) end |
#get(path, options = {}) ⇒ Object
40 41 42 43 44 |
# File 'lib/gitlab/request.rb', line 40 def get(path, ={}) set_httparty_config() () validate self.class.get(@endpoint + path, ) end |
#post(path, options = {}) ⇒ Object
46 47 48 49 50 |
# File 'lib/gitlab/request.rb', line 46 def post(path, ={}) set_httparty_config() (, path) validate self.class.post(@endpoint + path, ) end |
#put(path, options = {}) ⇒ Object
52 53 54 55 56 |
# File 'lib/gitlab/request.rb', line 52 def put(path, ={}) set_httparty_config() () validate self.class.put(@endpoint + path, ) end |
#set_request_defaults(sudo = nil) ⇒ Object
Sets a base_uri and default_params for requests.
88 89 90 91 92 |
# File 'lib/gitlab/request.rb', line 88 def set_request_defaults(sudo=nil) self.class.default_params sudo: sudo raise Error::MissingCredentials.new("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.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/gitlab/request.rb', line 66 def validate(response) case response.code when 400 then fail Error::BadRequest.new (response) when 401 then fail Error::Unauthorized.new (response) when 403 then fail Error::Forbidden.new (response) when 404 then fail Error::NotFound.new (response) when 405 then fail Error::MethodNotAllowed.new (response) when 409 then fail Error::Conflict.new (response) when 422 then fail Error::Unprocessable.new (response) when 500 then fail Error::InternalServerError.new (response) when 502 then fail Error::BadGateway.new (response) when 503 then fail Error::ServiceUnavailable.new (response) end 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 |