package general import ( "fmt" "strings" "sync" "time" ) var ( slingshotBackoff time.Time slingshotBackoffMu sync.Mutex ) func ParseURI(uri string) (repo, collection, rkey string, err error) { // URI format: 'at://DID/collection/recordkey' parts := strings.Split(strings.TrimPrefix(uri, "at://"), "/") if len(parts) != 3 { return "", "", "", fmt.Errorf("invalid URI format: %s", uri) } return parts[0], parts[1], parts[2], nil } func SlingshotAvailable() bool { slingshotBackoffMu.Lock() defer slingshotBackoffMu.Unlock() return time.Now().After(slingshotBackoff) } func SetSlingshotBackoff(d time.Duration) { slingshotBackoffMu.Lock() defer slingshotBackoffMu.Unlock() slingshotBackoff = time.Now().Add(d) }