aboutsummaryrefslogtreecommitdiff
path: root/backend/general/utils.go
blob: ac2744346bad557ce28ff1b24e4f41fb6d46a7c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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)
}