Class: Ssllabs::Api
- Inherits:
-
Object
- Object
- Ssllabs::Api
- Defined in:
- lib/ssllabs/api.rb
Instance Attribute Summary collapse
-
#current_assessments ⇒ Object
readonly
Returns the value of attribute current_assessments.
-
#max_assessments ⇒ Object
readonly
Returns the value of attribute max_assessments.
Instance Method Summary collapse
- #analyse(params = {}) ⇒ Object
- #get_endpoint_data(params = {}) ⇒ Object
- #get_status_codes ⇒ Object
- #info ⇒ Object
-
#initialize ⇒ Api
constructor
A new instance of Api.
- #request(name, params = {}) ⇒ Object
Constructor Details
#initialize ⇒ Api
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_assessments ⇒ Object (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_assessments ⇒ Object (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_codes ⇒ Object
61 62 63 |
# File 'lib/ssllabs/api.rb', line 61 def get_status_codes StatusCodes.load request(:get_status_codes) 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 |