Class: AWSCronParser::Validators::AWSAtValidator

Inherits:
Base
  • Object
show all
Defined in:
lib/aws_cron_parser/validators/aws_at_validator.rb

Overview

Validates AWS one-time schedules: at(yyyy-MM-ddThh:mm:ss)

Constant Summary collapse

DATE_TIME_FORMAT =
/\A(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\z/

Instance Attribute Summary

Attributes inherited from Base

#source

Instance Method Summary collapse

Methods inherited from Base

#initialize, validate

Methods included from Helpers

included

Constructor Details

This class inherits a constructor from AWSCronParser::Validators::Base

Instance Method Details

#validateObject

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/aws_cron_parser/validators/aws_at_validator.rb', line 9

def validate
  match = source.match(AT_REGEX)
  raise ArgumentError, 'Invalid at expression' unless match

  date_time = match[:datetime].strip
  parts = date_time.match(DATE_TIME_FORMAT)
  raise ArgumentError, "Invalid at date-time: expected yyyy-MM-ddThh:mm:ss, got #{date_time}" unless parts

  year, month, day, hour, minute, second = parts.captures.map(&:to_i)

  # Date.parse would roll 2025-02-30 forward into March instead of failing.
  raise ArgumentError, "Invalid at date: #{date_time}" unless Date.valid_date?(year, month, day)

  raise ArgumentError, "Invalid at time: #{date_time}" unless hour <= 23 && minute <= 59 && second <= 59

  true
end