diff options
| author | Guillermo Serrahima <dev@vylion.com> | 2026-04-11 07:40:30 +0200 |
|---|---|---|
| committer | Guillermo Serrahima <dev@vylion.com> | 2026-04-11 23:39:19 +0200 |
| commit | 9f0a9a6779f00786e4728ad5c3fad36814a293b0 (patch) | |
| tree | 4b16d535c5d41ef46980608a88b7581be3c2bfd0 /general/utils.go | |
| parent | f6d60077b7cfc0d589fa7961e2bb59aea9f993a3 (diff) | |
| download | llostre-9f0a9a6779f00786e4728ad5c3fad36814a293b0.tar.xz llostre-9f0a9a6779f00786e4728ad5c3fad36814a293b0.zip | |
project restructure
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) +} |
