parseTimestamp parses a timestamp from an RFC3339 string, unix-ms integer, or plain float (unix seconds). Returns 0 on failure.
(s string)
| 335 | // parseTimestamp parses a timestamp from an RFC3339 string, unix-ms integer, or |
| 336 | // plain float (unix seconds). Returns 0 on failure. |
| 337 | func parseTimestamp(s string) float64 { |
| 338 | if t, err := time.Parse(time.RFC3339Nano, s); err == nil { |
| 339 | return unixFloat(t) |
| 340 | } |
| 341 | if t, err := time.Parse(time.RFC3339, s); err == nil { |
| 342 | return unixFloat(t) |
| 343 | } |
| 344 | if f, err := strconv.ParseFloat(s, 64); err == nil { |
| 345 | // Heuristic: values > 1e12 are milliseconds, otherwise seconds. |
| 346 | if f > 1e12 { |
| 347 | return f / 1000 |
| 348 | } |
| 349 | return f |
| 350 | } |
| 351 | return 0 |
| 352 | } |
| 353 | |
| 354 | // applyFilter filters a slice of events in-memory. |
| 355 | func applyFilter(events []event.Event, f MessageFilter) []event.Event { |