Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
23 lines
586 B
Go
23 lines
586 B
Go
package util
|
|
|
|
import "time"
|
|
|
|
// TimeFormatIpfs is the format ipfs uses to represent time in string form.
|
|
var TimeFormatIpfs = time.RFC3339Nano
|
|
|
|
// ParseRFC3339 parses an RFC3339Nano-formatted time stamp and
|
|
// returns the UTC time.
|
|
func ParseRFC3339(s string) (time.Time, error) {
|
|
t, err := time.Parse(TimeFormatIpfs, s)
|
|
if err != nil {
|
|
return time.Time{}, err
|
|
}
|
|
return t.UTC(), nil
|
|
}
|
|
|
|
// FormatRFC3339 returns the string representation of the
|
|
// UTC value of the given time in RFC3339Nano format.
|
|
func FormatRFC3339(t time.Time) string {
|
|
return t.UTC().Format(TimeFormatIpfs)
|
|
}
|