# File lib/fog/ecloud/requests/compute/add_internet_service.rb, line 5
        def validate_internet_service_monitor(monitor)
          #FIXME: Refactor this type of function into something generic
          unless ['Disabled','HTTP','ECV'].include?(monitor[:type])
            raise ArgumentError.new("Supported monitor types are: ECV & HTTP")
          end

          required_opts = case monitor[:type]
                          when "Disabled"
                            [:type, :is_enabled]
                          else
                            [:type, :url_send_string, :http_headers, :receive_string, :is_enabled]
                          end

          unless required_opts.all? { |opt| monitor.has_key?(opt) && monitor[opt] }
            raise ArgumentError.new("Required Monitor data missing: #{(required_opts - monitor.keys).map(&:inspect).join(", ")}")
          end

          case monitor[:type]
            when "HTTP", "ECV"
              unless monitor[:http_headers].is_a?(Array) || monitor[:http_headers].is_a?(String)
                raise ArgumentError.new("Monitor :http_headers must be a String or Array")
              end
          end

          unless [true, false, "true", "false"].include?(monitor[:is_enabled])
            raise ArgumentError.new("Monitor :is_enabled must be true or false")
          end
        end