Class: Ssllabs::Api

Inherits:
Object
  • Object
show all
Defined in:
lib/ssllabs/api.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeApi

Returns a new instance of Api.



14
15
16
17
# File 'lib/ssllabs/api.rb', line 14

def initialize
  @max_assessments = 0
  @current_assessments = 0
end

Instance Attribute Details

#current_assessmentsObject (readonly)

Returns the value of attribute current_assessments.



12
13
14
# File 'lib/ssllabs/api.rb', line 12

def current_assessments
  @current_assessments
end

#max_assessmentsObject (readonly)

Returns the value of attribute max_assessments.



12
13
14
# File 'lib/ssllabs/api.rb', line 12

def max_assessments
  @max_assessments
end

Instance Method Details

#analyse(params = {}) ⇒ Object



53
54
55
# File 'lib/ssllabs/api.rb', line 53

def analyse(params = {})
  Host.load request(:analyze, params)
end

#get_endpoint_data(params = {}) ⇒ Object



57
58
59
# File 'lib/ssllabs/api.rb', line 57

def get_endpoint_data(params = {})
  Endpoint.load request(:get_endpoint_data, params)
end

#get_status_codesObject



61
62
63
# File 'lib/ssllabs/api.rb', line 61

def get_status_codes
  StatusCodes.load request(:get_status_codes)
end

#infoObject



49
50
51
# File 'lib/ssllabs/api.rb', line 49

def info
  Info.load request(:info)
end

#request(name, params = {}) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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