lib/uptimerobot/client.rb in uptimerobot-0.1.3 vs lib/uptimerobot/client.rb in uptimerobot-0.1.4
- old
+ new
@@ -16,16 +16,25 @@
DEFAULT_ADAPTERS = [
Faraday::Adapter::NetHttp,
Faraday::Adapter::Test
]
+ OPTIONS = [
+ :apiKey,
+ :raise_no_monitors_error,
+ :skip_unescape_monitor
+ ]
+
def initialize(options)
- @apiKey = options.delete(:apiKey)
- @raise_no_monitors_error = !!options.delete(:raise_no_monitors_error)
+ @options = {}
- raise ArgumentError, ':apiKey is required' unless @apiKey
+ OPTIONS.each do |key|
+ @options[key] = options.delete(key)
+ end
+ raise ArgumentError, ':apiKey is required' unless @options[:apiKey]
+
options[:url] ||= ENDPOINT
@conn = Faraday.new(options) do |faraday|
faraday.request :url_encoded
faraday.response :json, :content_type => /\bjson$/
@@ -58,11 +67,11 @@
request(method_name, params || {}, &block)
end
def request(method_name, params = {})
params.update(
- :apiKey => @apiKey,
+ :apiKey => @options[:apiKey],
:format => 'json',
:noJsonCallback => 1
)
response = @conn.get do |req|
@@ -70,14 +79,23 @@
req.params = params
yield(req) if block_given?
end
json = response.body
+ validate_response!(json)
+ if method_name == :getMonitors and not @options[:skip_unescape_monitor]
+ unescape_monitor!(json)
+ end
+
+ json
+ end
+
+ def validate_response!(json)
if json['stat'] != 'ok'
if json['id'] == '212'
- if @raise_no_monitors_error
+ if @options[:raise_no_monitors_error]
raise UptimeRobot::Error.new(json)
else
json.update(
'total' => '0',
'monitors' => {'monitor' => []}
@@ -85,9 +103,14 @@
end
else
raise UptimeRobot::Error.new(json)
end
end
+ end
- json
+ def unescape_monitor!(json)
+ json['monitors']['monitor'].each do |monitor|
+ friendlyname = monitor['friendlyname']
+ monitor['friendlyname'] = CGI.unescapeHTML(friendlyname)
+ end
end
end