Module: Isaca::Request

Defined in:
lib/isaca/requests/log_out.rb,
lib/isaca/requests/request.rb,
lib/isaca/requests/countries.rb,
lib/isaca/requests/get_user_by_id.rb,
lib/isaca/requests/report_consent.rb,
lib/isaca/requests/authenticate_user.rb,
lib/isaca/requests/explicit_countries.rb,
lib/isaca/requests/get_user_details_by_token.rb

Defined Under Namespace

Modules: Countries, ExplicitCountries, GetUserByID, LogOut, ReportConsent Classes: AuthenticateUser, GetUserDetailsByToken

Class Method Summary collapse

Class Method Details

.getFaraday::Response

Generic GET request used to build REST calls

Returns:

  • (Faraday::Response)

    Returns a Faraday Response object

Raises:

  • (Isaca::ServiceError)

    Raised because server returned a 400 response code. Bad request.

  • (Isaca::PartnerKey)

    The partner has provided an invalid API Key.

  • (Isaca::ServiceError)

    Raised because the server returned a 500 response code. Server error.



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/isaca/requests/request.rb', line 12

def self.get # :yields: [Faraday::Request] Yields a request object.
  conn = Faraday.new(url: Isaca.configuration.url)
  conn.ssl.verify_mode = OpenSSL::SSL::VERIFY_NONE unless Isaca.configuration.verify_ssl

  response = conn.get do |request|
    set_default_request_options(request)
    yield(request) if block_given?
  end

  Isaca.logger.debug("\n" + response.inspect + "\n") if Isaca.configuration.debug
  response.success? ? response : raise_response_error(response)
end

.raise_response_error(response) ⇒ Object

Testing Request#get is difficult so this method was created for easier testing and stubbing

Parameters:

  • response (Faraday::Response)

    Accepts a response object

Raises:



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/isaca/requests/request.rb', line 32

def self.raise_response_error(response)
  case response.status
  when 400
    raise ServiceError.new('A bad request was sent to the ISACA server.')
  when 403
    raise PartnerKeyError.new('Access denied as the provided partner key is not valid.')
  when 404
    raise ServiceError.new('Endpoint not found.')
  when 500
    raise ServiceError.new('An error occurred on the ISACA server.')
  else
    raise ServiceError.new("Response returned an unhandled status code: #{response.status}")
  end
end

.set_default_request_options(request) ⇒ Object

Helper method used to set common request headers used throughout the API

Parameters:

  • request (Faraday::Request)

    The request to which the headers are applied



50
51
52
53
54
55
56
# File 'lib/isaca/requests/request.rb', line 50

def self.set_default_request_options(request)
  uri = URI(Isaca.configuration.url)
  request.path = uri.path
  request.headers['Content-Type'] = 'application/json'
  request.headers['User-Agent'] = Isaca.configuration.user_agent
  request.params['secPass'] = Isaca.configuration.secret_pass
end