diff options
Diffstat (limited to 'general/utils.go')
| -rw-r--r-- | general/utils.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/general/utils.go b/general/utils.go new file mode 100644 index 0000000..ac27443 --- /dev/null +++ b/general/utils.go @@ -0,0 +1,35 @@ +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) +} |
