+30
util/uri.go
+30
util/uri.go
···
1
+
package util
2
+
3
+
import (
4
+
"fmt"
5
+
"strings"
6
+
)
7
+
8
+
type ParsedUri struct {
9
+
Did string
10
+
Collection string
11
+
Rkey string
12
+
}
13
+
14
+
func ParseAtUri(uri string) (*ParsedUri, error) {
15
+
if !strings.HasPrefix(uri, "at://") {
16
+
return nil, fmt.Errorf("AT uris must be prefixed with 'at://'")
17
+
}
18
+
19
+
trimmed := strings.TrimPrefix(uri, "at://")
20
+
parts := strings.Split(trimmed, "/")
21
+
if len(parts) != 3 {
22
+
return nil, fmt.Errorf("AT uris must have three parts: did, collection, tid")
23
+
}
24
+
25
+
return &ParsedUri{
26
+
Did: parts[0],
27
+
Collection: parts[1],
28
+
Rkey: parts[2],
29
+
}, nil
30
+
}