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 |