Method: OpenC3::ActivityModel#validate_input

Defined in:
lib/openc3/models/activity_model.rb

#validate_input(start:, stop:, kind:, data:) ⇒ Object

validate the input to the rules we have created for timelines.

  • A task’s start MUST NOT be in the past.

  • A task’s start MUST be before the stop.

  • A task CAN NOT be longer than MAX_DURATION (86400) in seconds.

  • A task MUST have a kind.

  • A task MUST have a data object/hash.



218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/openc3/models/activity_model.rb', line 218

def validate_input(start:, stop:, kind:, data:)
  begin
    DateTime.strptime(start.to_s, '%s')
    DateTime.strptime(stop.to_s, '%s')
  rescue Date::Error
    raise ActivityInputError.new "start and stop must be seconds: #{start}, #{stop}"
  end
  now_f = Time.now.to_f
  begin
    duration = stop - start
  rescue NoMethodError
    raise ActivityInputError.new "start and stop must be seconds: #{start}, #{stop}"
  end
  if now_f >= start and kind != 'expire'
    raise ActivityInputError.new "activity must be in the future, current_time: #{now_f} vs #{start}"
  elsif duration > MAX_DURATION and kind != 'expire'
    raise ActivityInputError.new "activity can not be longer than #{MAX_DURATION} seconds"
  elsif duration <= 0
    raise ActivityInputError.new "start: #{start} must be before stop: #{stop}"
  elsif !VALID_KINDS.include?(kind)
    raise ActivityInputError.new "unknown kind: #{kind}, must be one of #{VALID_KINDS.join(', ')}"
  elsif data.nil?
    raise ActivityInputError.new "data must not be nil: #{data}"
  elsif data.is_a?(Hash) == false
    raise ActivityInputError.new "data must be a json object/hash: #{data}"
  end
end