1package util
2
3import (
4 "fmt"
5 "strings"
6)
7
8type ParsedUri struct {
9 Did string
10 Collection string
11 Rkey string
12}
13
14func 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}