TimeStampCompare
Compares a single timestamp to a list of timestamps.
- Type
- python
- Pack
- CommonScripts
Source
import dateparser
import demistomock as demisto
from CommonServerPython import * # noqa: E402 lgtm [py/polluting-import]
from CommonServerUserPython import * # noqa: E402 lgtm [py/polluting-import]
EQUAL = "equal"
BEFORE = "before"
AFTER = "after"
TIMESTAMP_FORMAT = "%Y-%m-%dT%H:%M:%S%Z"
DT_STRING = (
"TimeStampCompare(val.TestedTime && val.TestedTime == obj.TestedTime && "
"val.ComparedTime && val.ComparedTime == obj.ComparedTime)"
)
def time_stamp_compare_command(args):
tested_time = args.get("tested_time")
values_to_compare = argToList(args.get("values_to_compare"))
time_format = args.get("time_format", None)
if time_format == "":
time_format = None
elif time_format is not None:
time_format = [time_format]
results = []
parsed_tested_time = dateparser.parse(
tested_time, date_formats=time_format, settings={"TIMEZONE": "UTC", "RELATIVE_BASE": datetime(datetime.now().year, 1, 1)}
)
for compared_time in values_to_compare:
parsed_compared_time = dateparser.parse(
compared_time,
date_formats=time_format,
settings={"TIMEZONE": "UTC", "RELATIVE_BASE": datetime(datetime.now().year, 1, 1)},
)
assert parsed_compared_time is not None
assert parsed_tested_time is not None
result = compare_times(parsed_compared_time.timestamp(), parsed_tested_time.timestamp())
results.append({"TestedTime": tested_time, "ComparedTime": compared_time, "Result": result})
human_readable = tableToMarkdown("Timestamp compare", results, ["TestedTime", "ComparedTime", "Result"])
return (human_readable, {DT_STRING: results}, results)
def compare_times(parsed_compared_time, parsed_tested_time):
if parsed_compared_time < parsed_tested_time:
result = BEFORE
elif parsed_compared_time > parsed_tested_time:
result = AFTER
else:
result = EQUAL
return result
def main():
try:
return_outputs(*time_stamp_compare_command(demisto.args()))
except Exception as exc:
return_error(f"Failed to execute TimeStampCompare. Error: {exc!s}")
if __name__ in ("__main__", "__builtin__", "builtins"):
main()
README
Compares a single timestamp to a list of timestamps.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | |
| Cortex XSOAR Version | 0.0.0 |
Used In
This script is used in the following playbooks and scripts.
- TIM - Process Domain Age With Whois
Inputs
| Argument Name | Description |
|---|---|
| tested_time | Timestamp to compare to the list of timestamps. |
| values_to_compare | Values to compare the tested_time against. The script checks each value and determines whether it’s before/after/equal to the tested_time. |
| time_format | Time format of the times you entered. By default, the script uses automatic parsing. This should be used for cases like DD/MM/YYYY. Automatic parsing will detect formats such as: February 15th 2009, 02-15-2020, 02-15-2020T14:30:00Z |
Outputs
| Path | Description | Type |
|---|---|---|
| TimeStampCompare.TestedTime | The tested time | Date |
| TimeStampCompare.ComapredTime | The compared time | Date |
| TimeStampCompare.Result | Whether the tested time was before, after, or equal to the comapred time. | String |
Script Example
!TimeStampCompare tested_time='01-01-2020' values_to_compare='2020-02-01T00:00:00,31.12.2019'
Context Example
{
"TimeStampCompare": [
{
"ComparedTime": "'2020-02-01T00:00:00",
"Result": "after",
"TestedTime": "'01-01-2020'"
},
{
"ComparedTime": "31.12.2019'",
"Result": "before",
"TestedTime": "'01-01-2020'"
}
]
}
Human Readable Output
Timestamp compare
| TestedTime | ComparedTime | Result |
|---|---|---|
| ‘01-01-2020’ | ‘2020-02-01T00:00:00 | after |
| ‘01-01-2020’ | 31.12.2019’ | before |