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