class Gitlab::Request
@private
Attributes
endpoint[RW]
private_token[RW]
Public Class Methods
decode(response)
click to toggle source
Decodes a JSON response into Ruby object.
# 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)
click to toggle source
Converts the response body to an ObjectifiedHash
.
# 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
Public Instance Methods
delete(path, options={})
click to toggle source
# File lib/gitlab/request.rb, line 58 def delete(path, options={}) set_httparty_config(options) set_authorization_header(options) validate self.class.delete(@endpoint + path, options) end
get(path, options={})
click to toggle source
# File lib/gitlab/request.rb, line 40 def get(path, options={}) set_httparty_config(options) set_authorization_header(options) validate self.class.get(@endpoint + path, options) end
post(path, options={})
click to toggle source
# File lib/gitlab/request.rb, line 46 def post(path, options={}) set_httparty_config(options) set_authorization_header(options, path) validate self.class.post(@endpoint + path, options) end
put(path, options={})
click to toggle source
# File lib/gitlab/request.rb, line 52 def put(path, options={}) set_httparty_config(options) set_authorization_header(options) validate self.class.put(@endpoint + path, options) end
set_request_defaults(sudo=nil)
click to toggle source
Sets a base_uri and default_params for requests. @raise [Error::MissingCredentials] if endpoint not set.
# 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)
click to toggle source
Checks the response code for common errors. Returns parsed response for successful requests.
# 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
Private Instance Methods
set_httparty_config(options)
click to toggle source
Set HTTParty configuration @see github.com/jnunemaker/httparty
# File lib/gitlab/request.rb, line 113 def set_httparty_config(options) options.merge!(httparty) if httparty end