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.
90 91 92 93 94 |
# File 'lib/gitlab/request.rb', line 90 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 85 86 |
# File 'lib/gitlab/request.rb', line 66 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 fail error_klass.new(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 |