class Ssllabs::Api

Attributes

current_assessments[R]
max_assessments[R]

Public Class Methods

new() click to toggle source
# File lib/ssllabs/api.rb, line 14
def initialize
  @max_assessments = 0
  @current_assessments = 0
end

Public Instance Methods

analyse(params = {}) click to toggle source
# File lib/ssllabs/api.rb, line 53
def analyse(params = {})
  Host.load request(:analyze, params)
end
get_endpoint_data(params = {}) click to toggle source
# File lib/ssllabs/api.rb, line 57
def get_endpoint_data(params = {})
  Endpoint.load request(:get_endpoint_data, params)
end
get_status_codes() click to toggle source
# File lib/ssllabs/api.rb, line 61
def get_status_codes
  StatusCodes.load request(:get_status_codes)
end
info() click to toggle source
# File lib/ssllabs/api.rb, line 49
def info
  Info.load request(:info)
end
request(name, params = {}) click to toggle source
# File lib/ssllabs/api.rb, line 19
def request(name, params = {})
  name = name.to_s.camelize(:lower)
  uri = URI("#{API_LOCATION}#{name}?#{URI.encode_www_form(params)}")
  r = Net::HTTP.get_response(uri)
  if r.code.to_i == 200
    @max_assessments = r['X-Max-Assessments']
    @current_assessments = r['X-Current-Assessments']
    r = JSON.load(r.body)
    if r.key?('errors')
      raise InvocationError, "API returned: #{r['errors']}"
    end
    return r
  end

  case r.code.to_i
  when 400
    raise InvocationError, "invalid parameters"
  when 429
    raise RequestRateTooHigh, "request rate is too high, please slow down"
  when 500
    raise InternalError, "service encountered an error, sleep 5 minutes"
  when 503
    raise ServiceNotAvailable, "service is not available, sleep 15 minutes"
  when 529
    raise ServiceOverloaded, "service is overloaded, sleep 30 minutes"
  else
    raise StandardError, "http error code #{r.code}"
  end
end