Method: Optimizely::DatafileProjectConfig.create

Defined in:
lib/optimizely/config/datafile_project_config.rb

.create(datafile, logger, error_handler, skip_json_validation) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# File 'lib/optimizely/config/datafile_project_config.rb', line 168

def self.create(datafile, logger, error_handler, skip_json_validation)
  # Looks up and sets datafile and config based on response body.
  #
  # datafile - JSON string representing the Optimizely project.
  # logger - Provides a logger instance.
  # error_handler - Provides a handle_error method to handle exceptions.
  # skip_json_validation - Optional boolean param which allows skipping JSON schema
  #                       validation upon object invocation. By default JSON schema validation will be performed.
  # Returns instance of DatafileProjectConfig, nil otherwise.
  if !skip_json_validation && !Helpers::Validator.datafile_valid?(datafile)
    default_logger = SimpleLogger.new
    default_logger.log(Logger::ERROR, InvalidInputError.new('datafile').message)
    return nil
  end

  begin
    config = new(datafile, logger, error_handler)
  rescue StandardError => e
    default_logger = SimpleLogger.new
    error_to_handle = e.class == InvalidDatafileVersionError ? e : InvalidInputError.new('datafile')
    error_msg = error_to_handle.message

    default_logger.log(Logger::ERROR, error_msg)
    error_handler.handle_error error_to_handle
    return nil
  end

  config
end