module VWO::Utils::Validations

Public Instance Methods

is_valid_batch_event_settings(batch_events) click to toggle source

Validates if the value passed batch_events has correct data type and values or not.

Args: batch_events [Hash]: value to be tested

@return: [Boolean]: True if all conditions are passed else False

# File lib/vwo/utils/validations.rb, line 71
def is_valid_batch_event_settings(batch_events)
  logger = VWO::Logger.get_instance
  events_per_request = batch_events[:events_per_request]
  request_time_interval = batch_events[:request_time_interval]

  unless events_per_request || request_time_interval
    logger.log(
      VWO::LogLevelEnum::ERROR,
      format(
        VWO::LogMessageEnum::ErrorMessages::EVENT_BATCHING_INSUFFICIENT,
        file: VWO::FileNameEnum::ValidateUtil
      )
    )
    return false
  end

  if (request_time_interval && !valid_number?(request_time_interval))
    logger.log(
      VWO::LogLevelEnum::ERROR,
      format(
        VWO::LogMessageEnum::ErrorMessages::REQUEST_TIME_INTERVAL_INVALID,
        file: VWO::FileNameEnum::ValidateUtil
      )
    )
    return false
  end

  if (events_per_request && !valid_number?(events_per_request))
    logger.log(
      VWO::LogLevelEnum::ERROR,
      format(
        VWO::LogMessageEnum::ErrorMessages::EVENTS_PER_REQUEST_INVALID,
        file: VWO::FileNameEnum::ValidateUtil
      )
    )
    return false
  end

  if events_per_request && (events_per_request < VWO::MIN_EVENTS_PER_REQUEST || events_per_request > VWO::MAX_EVENTS_PER_REQUEST)
    logger.log(
      VWO::LogLevelEnum::ERROR,
      format(
        VWO::LogMessageEnum::ErrorMessages::EVENTS_PER_REQUEST_OUT_OF_BOUNDS,
        file: VWO::FileNameEnum::ValidateUtil,
        min_value: VWO::MIN_EVENTS_PER_REQUEST,
        max_value: VWO::MAX_EVENTS_PER_REQUEST
      )
    )
    return false
  end

  if request_time_interval && request_time_interval < VWO::MIN_REQUEST_TIME_INTERVAL
    logger.log(
      VWO::LogLevelEnum::ERROR,
      format(
        VWO::LogMessageEnum::ErrorMessages::REQUEST_TIME_INTERVAL_OUT_OF_BOUNDS,
        file: VWO::FileNameEnum::ValidateUtil,
        min_value: VWO::MIN_REQUEST_TIME_INTERVAL
      )
    )
    return false
  end

  if batch_events.key?(:flushCallback) && !batch_events[:flushCallback].is_a?(Method)
    logger.log(
      VWO::LogLevelEnum::ERROR,
      format(
        VWO::LogMessageEnum::ErrorMessages::FLUSH_CALLBACK_INVALID,
        file: VWO::FileNameEnum::ValidateUtil
      )
    )
    return false
  end
  true
end
valid_basic_data_type?(val) click to toggle source

@return [Boolean]

# File lib/vwo/utils/validations.rb, line 62
def valid_basic_data_type?(val)
  valid_number?(val) || valid_string?(val) || valid_boolean?(val)
end
valid_boolean?(val) click to toggle source

@return [Boolean]

# File lib/vwo/utils/validations.rb, line 57
def valid_boolean?(val)
  val.is_a?(TrueClass) || val.is_a?(FalseClass)
end
valid_hash?(val) click to toggle source

@return [Boolean]

# File lib/vwo/utils/validations.rb, line 52
def valid_hash?(val)
  val.is_a?(Hash)
end
valid_number?(val) click to toggle source

@return [Boolean]

# File lib/vwo/utils/validations.rb, line 42
def valid_number?(val)
  val.is_a?(Numeric)
end
valid_settings_file?(settings_file) click to toggle source

Validates the settings_file @param [Hash]: JSON object received from VWO server

must be JSON.

@return [Boolean]

# File lib/vwo/utils/validations.rb, line 29
def valid_settings_file?(settings_file)
  settings_file = JSON.parse(settings_file)
  JSON::Validator.validate!(VWO::Schema::SETTINGS_FILE_SCHEMA, settings_file)
rescue StandardError
  false
end
valid_string?(val) click to toggle source

@return [Boolean]

# File lib/vwo/utils/validations.rb, line 47
def valid_string?(val)
  val.is_a?(String)
end
valid_value?(val) click to toggle source

@return [Boolean]

# File lib/vwo/utils/validations.rb, line 37
def valid_value?(val)
  !val.nil? && val != {} && val != []
end